标签:bsp i++ bre 问题 scan alt png ++ style
这题第一次拿到手,一脸懵B。这。。这有什么规律嘛??感觉自己被难住了
仔细一看,发现它是从按照对角线轮回排布。
我又想起了之前所做的玩游戏的问题,发现这题也是类似。需要用到有限自动机模型。
状态也就是方向,每进行一步,然后进行操作,之后改变一次方向。
1 #include<stdio.h> 2 void creatSnake(int a[][105],int size); 3 void outputArray(int a[][105],int size); 4 5 int main(void) 6 { 7 int n; 8 int arr[105][105]; 9 10 scanf("%d",&n); 11 creatSnake(arr,n); 12 outputArray(arr,n); 13 14 return 0; 15 } 16 void creatSnake(int arr[][105],int size) 17 { 18 int dir=1;//1表示下,2表示斜上,3表示右,4表示斜下 19 int k; 20 int i=0,j=0; 21 arr[i][j]=1; 22 for(k=1;k<=size*size-1;k++) 23 { 24 switch(dir) 25 { 26 case 1: 27 { 28 arr[i+1][j]=arr[i][j]+1; 29 i=i+1; 30 if(j==0) dir=2; 31 if(j==size-1) dir=4; 32 break; 33 } 34 case 2: 35 { 36 arr[i-1][j+1]=arr[i][j]+1; 37 i=i-1; 38 j=j+1; 39 if(i==0&&j!=size-1) dir=3; 40 else if(j==size-1) dir=1; 41 else dir=2; 42 break; 43 } 44 case 3: 45 { 46 arr[i][j+1]=arr[i][j]+1; 47 j=j+1; 48 if(i==0) dir=4; 49 if(i==size-1) dir=2; 50 break; 51 } 52 case 4: 53 { 54 arr[i+1][j-1]=arr[i][j]+1; 55 i=i+1; 56 j=j-1; 57 if(j==0&&i!=size-1) dir=1; 58 else if(i==size-1) dir=3; 59 else dir=4; 60 break; 61 } 62 } 63 } 64 } 65 void outputArray(int a[][105],int size) 66 { 67 int i,j; 68 for(i=0;i<size;i++) 69 { 70 for(j=0;j<size;j++) 71 { 72 printf("%d",a[i][j]); 73 if(j==size-1) printf("\n"); 74 else printf(" "); 75 } 76 } 77 }
标签:bsp i++ bre 问题 scan alt png ++ style
原文地址:https://www.cnblogs.com/ziyang1060/p/11959792.html