我整理出来了,谢谢楼主的鼓励.不过我刚提交时一直是TIME LIMIT EXCEED,是我的算法过于复杂然后超过了时间了吗??还是网速慢提交的时间过长导致的??
#include <stdio.h>
#include<stdlib.h>
#include<math.h>
#define N 3000
int main()
{
int i;
int n;
int *zzw=(int*)malloc(N*sizeof(int));
int TO_FIND_THEFIRSTROW(int *, int n);
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&(*(zzw+i)));
TO_FIND_THEFIRSTROW(zzw,n);
free(zzw);
return 0;
}
int TO_FIND_THEFIRSTROW(int*zzw,int n)
{
int i,j,sum=0,m,k,min=0,l;
for(j=0;j<n;j++)
{
l=(int)pow(2,(double)j);
min=min+*(zzw+n-1-j)*l;
}
for(i=0;i<n;i++)
{
m=*zzw;
for(k=1;k<n;k++)
*(zzw+k-1)=*(zzw+k);
*(zzw+n-1)=m;
for(j=0;j<n;j++)
{
l=(int)pow(2,(double)j);
sum=sum+*(zzw+n-1-j)*l;
}
if(min>sum)min=sum;
sum=0;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
l=(int)pow(2,(double)j);
sum=sum+*(zzw+n-1-j)*l;
}
if(sum==min)
{
for(i=0;i<n;i++)
printf("%d ",*(zzw+i));
}
m=*zzw;
for(k=1;k<n;k++)
*(zzw+k-1)=*(zzw+k);
*(zzw+n-1)=m;
sum=0;
}
}
新的哈
调试了很久才过
寒一个
