CSP考試 2014年12月第2題 Z字形掃描 C語言實現
阿新 • • 發佈:2019-01-01
#include <stdio.h> int main() { //int NUM=4; int NUM; scanf("%d",&NUM); int a[NUM][NUM]; /* a[0][0]=1; a[0][1]=5; a[0][2]=3; a[0][3]=9; a[1][0]=3; a[1][1]=7; a[1][2]=5; a[1][3]=6; a[2][0]=9; a[2][1]=4; a[2][2]=6; a[2][3]=4; a[3][0]=7; a[3][1]=3; a[3][2]=1; a[3][3]=3; */ int b[NUM*NUM]; int c[NUM*NUM]; int i; int j; for(i=0;i<NUM;i++) { for(j=0;j<NUM;j++) { scanf("%d",&a[i][j]); } } int temp=0; for(i=1;i<=NUM;i++) { int h=0; int k=i-1; for(j=0;j<i;j++) { b[temp]=a[h][k]; c[temp]=b[temp]; k--; temp++; h++; } } /* for(i=0;i<NUM*NUM;i++) { printf("b %d = %d\n",i,b[i]); }*/ //printf("b 10 = %d\n",b[10]); for(i=NUM-1;i>0;i--) { //printf("hello\n"); int h=NUM-i; int k=NUM-1; for(j=0;j<i;j++) { b[temp]=a[h][k]; c[temp]=b[temp]; k--; temp++; h++; } } /* for(i=0;i<NUM*NUM;i++) { printf("b %d = %d\n",i,b[i]); }*/ // temp=0; for(i=1;i<=NUM;i++) { if(i%2==1) { int t; t=temp+i; for(j=0;j<i;j++) { c[temp]=b[t-j-1];// temp++; } } else if(i%2==0) { temp=temp+i; } } for(i=NUM-1;i>0;i--) { if(i%2==1) { int t; t=temp+i; for(j=0;j<i;j++) { c[temp]=b[t-j-1];// temp++; } } else if(i%2==0) { temp=temp+i; } } for(i=0;i<NUM*NUM;i++) { printf("%d ",c[i]); } /* int i=0; int j=0; int n[NUM*2-1]; n[0]=1;//斜行中數的個數 printf("n[0]=%d\n",n[0]); int k; for(k=1;k<(NUM*2-1);k++) { if(k<NUM) { n[k]=n[k-1]+1; } if(k>=NUM) { n[k]=n[k-1]-1; } printf("n[%d]=%d\n",k,n[k]); } printf("\n"); int t[NUM*2-1]; t[0]=0;//i+j for(k=1;k<(NUM*2-1);k++) { t[k]=t[k-1]+1; } for(k=0;k<(NUM*2-1);k++) { printf("t[%d]=%d\n",k,t[k]); }*/ return 0; }