码迷,mamicode.com
首页 > 其他好文 > 详细

成功解决了一个看似不可能的问题~

时间:2019-11-29 19:39:55      阅读:66      评论:0      收藏:0      [点我收藏+]

标签: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 }

加油,Ziyang!

 

成功解决了一个看似不可能的问题~

标签:bsp   i++   bre   问题   scan   alt   png   ++   style   

原文地址:https://www.cnblogs.com/ziyang1060/p/11959792.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!