小学生又双叒叕来写题解啦!
翻了一下大家的代码,都好长好复杂,其实直接模拟就好了。
先说一个巨坑:发现坐标与我们平时不同,所以进行修改。
写一个函数,函数作用为找出下一位密码。
函数需要八种不同情况的判断,有点繁琐,唯一要注意的是边界方向的修改。
再次声明,代码有大量空间压行,但没必要,因为这样可以理解得更清楚。
送上满分代码:
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
char a[15][15];
int x, y;
string W, ans;
void FindAnswer()
{
ans += a[x][y];
//printf("x = %d, y = %d;\n", x, y);
//用以上语句调试超好用。
if (W == "R") //往右。
{
if (x == 9) x--, W = "L";
else x++;
}
else if (W == "L") //往左。
{
if (x == 1) x++, W = "R";
else x--;
}
else if (W == "U") //往上。
{
if (y == 1) y++, W = "D";
else y--;
}
else if (W == "D") //往下。
{
if (y == 9) y--, W = "U";
else y++;
}
else if (W == "RU") //往右上。
{
//x是列,y是行!!!
if (x == 9 && y == 1) x--, y++, W = "LD";
else if (x == 9) x--, y--, W = "LU";
else if (y == 1) x++, y++, W = "RD";
else x++, y--;
}
else if (W == "RD") //往右下。
{
if (x == 9 && y == 9) x--, y--, W = "LU";
else if (x == 9) x--, y++, W = "LD";
else if (y == 9) x++, y--, W = "RU";
else x++, y++;
}
else if (W == "LU") //往左上。
{
if (x == 1 && y == 1) x++, y++, W = "RD";
else if (x == 1) x++, y--, W = "RU";
else if (y == 1) x--, y++, W = "LD";
else x--, y--;
}
else if (W == "LD") //往左下。
{
if (x == 1 && y == 9) x++, y--, W = "RU";
else if (x == 1) x++, y++, W = "RD";
else if (y == 9) x--, y--, W = "LU";
else x--, y++;
}
}
int main()
{
cin >> x >> y >> W;
for (int i = 1; i <= 9; i++)
for (int j = 1; j <= 9; j++)
cin >> a[j][i]; //由于题目的坐标与平时不同,所以要反向读入。
for (int i = 1; i <= 4; i++) FindAnswer();
cout << ans << endl; //记得按要求换行。
return 0;
}
首发:2022-02-01 22:06:49
标签:RU,--,题解,AT212,else,RD,++,&& From: https://www.cnblogs.com/liangbowen/p/16622764.html