pku 1573 Robot Motion 第一周训练——模拟
生活随笔
收集整理的這篇文章主要介紹了
pku 1573 Robot Motion 第一周训练——模拟
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://poj.org/problem?id=1573
一個原來做過的模擬題,大早上做題就是頭腦清楚啊。1Y..呵呵。。
View Code #include <iostream>#include <cstring>
#include <cstdio>
#define maxn 107
using namespace std;
char str[maxn][maxn];
bool visit[maxn][maxn];//標記是否已經走過
int map[maxn][maxn];//存儲到達ij這點時走了多少步
int main()
{
int n,m,s,i,j;
int a,b;
bool flag;
while (cin>>n>>m>>s)
{
if (!n && !m && !s) break;
memset(visit,false,sizeof(visit));
flag = false;
for (i = 0; i < n; ++i)
scanf("%s",str[i]);
i = 0; j = s - 1;
int len = 1;
map[i][j] = len++;
visit[i][j] = true;
while ((i >= 0 && i < n) && (j >=0 && j < m))
{
if (str[i][j] == 'N')
{
i--;
if (visit[i][j] == true)
{
a = map[i][j] - 1;
b = map[i + 1][j] - map[i][j] + 1;
flag = true;
break;
}
visit[i][j] = true;
map[i][j] = len++;
}
else if (str[i][j] == 'S')
{
i++;
if (visit[i][j] == true)
{
a = map[i][j] - 1;
b = map[i - 1][j] - map[i][j] + 1;
flag = true;
break;
}
visit[i][j] = true;
map[i][j] = len++;
}
else if (str[i][j] == 'W')
{
j--;
if (visit[i][j] == true)
{
a = map[i][j] - 1;
b = map[i][j + 1] - map[i][j] + 1;
flag = true;
break;
}
visit[i][j] = true;
map[i][j] = len++;
}
else if (str[i][j] == 'E')
{
j++;
if (visit[i][j] == true)
{
a = map[i][j] - 1;
b = map[i][j - 1] - map[i][j] + 1;
flag = true;
break;
}
visit[i][j] = true;
map[i][j] = len++;
}
a = i; b = j;
}
if (flag) printf("%d step(s) before a loop of %d step(s)\n",a,b);
else printf("%d step(s) to exit\n",map[a][b] - 1);
}
return 0;
}
轉載于:https://www.cnblogs.com/E-star/archive/2012/02/26/2368390.html
總結
以上是生活随笔為你收集整理的pku 1573 Robot Motion 第一周训练——模拟的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转载】C ++ 基础 指针 引用
- 下一篇: 标准配置的UBUNTU 11.10 RU