| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
只有计算概论,程序设计实习的基础,怎么省时呢?In Reply To:这个题省不了多少时间的 Posted by:TN at 2005-07-04 10:48:00 #include<iostream.h>
void main()
{
int N,i,j,k,p;
int *a,*b,*r;
cin>>N;
a=new int[N];
b=new int[N];
r=new int[N];
for(i=1;i<N;i++)
{
cin>>a[i];
b[i]=i+1;
}
b[0]=1;
for(i=N-1,k=N-1;i>0;i--)
{
if(i==N-1)
{
r[i]=a[i]+1;
for(j=r[i]-1;j<k;j++)
b[j]=b[j+1];
}
else
{
for(j=0;j<k;j++)
{
int x=0;
for(p=N-1;p>i;p--)
{
if(r[p]<b[j])
x++;
}
if(b[j]==a[i]+x+1)
{
k--;
r[i]=b[j];
for(p=j;p<k;p++)
b[p]=b[p+1];
break;
}
}
}
}
cout<<b[0]<<endl;
for(i=1;i<N;i++)
cout<<r[i]<<endl;
delete [] a;
delete [] b;
delete [] r;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator