poj1573
题意:给出一个矩形,N,E,S,W分别代表进行移动的方向,如果走出矩形网格则输出经过的网格数,如果在矩形网格内循环,则输出没进入循环之前所走过的网格数和循环所经过的网格数;
思路:创建两个数组,一个字符数组存每个网格中所要进行的操作,另一个整型数组代表状态,0代表没走过,1代表走过了,然后模拟;
再提醒一点,建立的字符和整型数组要和题目中建里的一模一样,因为这个我又WA了一发、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #include<iostream> #include<cstring> using namespace std; const int qq=15; int gid[qq][qq]; char s[qq][qq]; int main() { int n,m,k; while (cin >> n >> m >> k) { cin.get(); if (n==0&&m==0&&k==0) break ; memset (gid,0, sizeof (gid)); for ( int i=0;i<=m+1;++i){ gid[0][i]=1;gid[n+1][i]=1; //外围标记 } for ( int i=0;i<=n+1;++i){ //外围标记 gid[i][0]=1;gid[i][m+1]=1; } for ( int j,i=1;i<=n;++i){ for (j=1;j<=m;++j) s[i][j]=cin.get(); cin.get(); } int x,y;x=k;y=1; int tot=0; while (!gid[y][x]){ while (!gid[y][x]&&s[y][x]== 'N' ){ gid[y][x]=1;y-=1;++tot; } while (!gid[y][x]&&s[y][x]== 'E' ){ gid[y][x]=1;x+=1;++tot; } while (!gid[y][x]&&s[y][x]== 'S' ){ gid[y][x]=1;y+=1;++tot; } while (!gid[y][x]&&s[y][x]== 'W' ){ gid[y][x]=1;x-=1;++tot; } } if (x<1||y<1||x>m||y>n) cout << tot << " step(s) to exit\n" ; else { int count=0; while (gid[y][x]){ //计算循环所经过的网格数 此时1,0的意义互换 while (gid[y][x]&&s[y][x]== 'N' ){ gid[y][x]=0;y-=1;++count; } while (gid[y][x]&&s[y][x]== 'E' ){ gid[y][x]=0;x+=1;++count; } while (gid[y][x]&&s[y][x]== 'S' ){ gid[y][x]=0;y+=1;++count; } while (gid[y][x]&&s[y][x]== 'W' ){ gid[y][x]=0;x-=1;++count; } } cout << tot-count << " step(s) before a loop of " << count << " step(s)\n" ; } } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库