CCF 201412(2)之字形扫描

来源:互联网 发布:昆明学院网络教学平台 编辑:程序博客网 时间:2024/06/05 12:50
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...还要再想一下,代码太冗余整个思路是一下出来的,所以写完之后不太明白哪里出错
0 0
原创粉丝点击