首页 > 其他 > 详细

走格子(回行走法)

时间:2018-06-18 13:03:32      阅读:215      评论:0      收藏:0      [点我收藏+]

链接:https://www.nowcoder.com/acm/contest/114/A
来源:牛客网

思路:用数组代替方向

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define N 1005
 4 
 5 int ma[N][N],dir[2][4]={{1,0,-1,0},{0,1,0,-1}};//方向数组
 6 int n,m;
 7 
 8 bool judge(int xx,int yy)//判断下一格是否可走
 9 {
10     if (xx<1||xx>n||yy<1||yy>n||ma[xx][yy]==1)
11     {
12         return false;
13     }
14     return true;
15 }
16 
17 void solve(int x,int y)
18 {
19     int i,xx,yy;//xx,yy为下一格
20     memset(ma,0,sizeof(ma));
21     ma[x][y]=1;//注意要放在memset后面,否则会死循环
22     for (i=0;m>0;)
23     {
24         xx=x+dir[0][i];
25         yy=y+dir[1][i];
26         if (false==judge(xx,yy))
27         {
28             i=(i+1)%4;//换方向
29             continue;
30         }
31         x=xx;
32         y=yy;
33         ma[x][y]=1;
34         m--;
35     }
36     printf("%d %d\n",x,y);//注意题目的坐标系其实和二维数组的系数一样
37 }
38 
39 int main()
40 {
41     while (scanf("%d %d",&n,&m)!=EOF)
42     {
43         solve(1,1);
44     }
45 
46     return 0;
47 }

 

走格子(回行走法)

原文:https://www.cnblogs.com/hemeiwolong/p/9194875.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!