您的位置:首页 > 其它

CCF 201412(2)之字形扫描

2017-03-12 10:58 246 查看
Java优化算法参见:https://my.oschina.net/chenzuhuang/blog/356073



#include <stdio.h>
int main()
{
int i,j,n;
int a[501][501];
int book[2501]={0};
int count=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
i=1;
j=1;
int k;
if(n==1)
printf("%d\n",a[1][1]);
else
{
k=1;
while(i<=n&&j<=n&&k<=(2*n-1))
{
if(i==n&&j==n)
{   book[count]=a[i][j];
count++;
break;
}
else if(i==1&&j==1)
{
book[count]=a[i][j];
count++;
j++;
k++;
book[count]=a[i][j];
count++;
j--;
i++;
}
else if(i==1&&j==n)
{

book[count]=a[i][j];
count++;
i++;
k++;
book[count]=a[i][j];
count++;
i++;
j--;
}
else if(i==1)
{
book[count]=a[i][j];
count++;
j++;
k++;
book[count]=a[i][j];
count++;
i++;
j--;
}
else if(j==n&&(i!=1))
{
book[count]=a[i][j];
count++;
i++;
k++;
book[count]=a[i][j];
count++;
i++;
j--;
}
else if(j==1&&!(i==n))
{
book[count]=a[i][j];
count++;
i++;
k++;
book[count]=a[i][j];
count++;
i--;
j++;
}
else if(i==n&&(j!=1))
{
book[count]=a[i][j];
count++;
j++;
k++;
book[count]=a[i][j];
count++;
j++;
i--;
}
else if(i==n&&j==1&&n%2==0)
{
book[count]=a[i][j];
count++;
j++;
k++;
book[count]=a[i][j];
count++;
j++;
i--;
}
else if(i==n&&j==1&&n%2==1)
{
book[count]=a[i][j];
count++;
i--;
j++;
}
else if(k%2==1)
{
book[count]=a[i][j];
count++;
i--;
j++;
}
else if(k%2==0)
{
book[count]=a[i][j];
count++;
i++;
j--;
}

}
}
if(n!=1)
{
for(i=0;i<count;i++)
printf("%d ",book[i]);
printf("\n");
}
return 0;
}
50分sad...还要再想一下,代码太冗余整个思路是一下出来的,所以写完之后不太明白哪里出错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: