【链接】 我是链接,点我呀:)
【题意】
【题解】
模拟题。。 输入稍微恶心了点。 getchar()一个一个搞就好。【代码】
#include <bits/stdc++.h>
using namespace std;
const int N = 5;
string s[N + 5],s2;
char S[N + 5][N + 5];
int x, y;
bool ok()
{
bool ok = true;
for (char key = getchar();key !='0';key = getchar())
{
if (!ok) continue;
int x2 = x, y2 = y;
switch (key)
{
case 'A':
{
x2--;
break;
}
case 'B':
{
x2++;
break;
}
case 'L':
{
y2--;
break;
}
case 'R':
{
y2++;
break;
}
default:
break;
}
if (x2 <= 0 || x2 >= 6 || y2 <= 0 || y2 >= 6) {
ok = false; continue;
}
swap(S[x][y], S[x2][y2]);
x = x2, y = y2;
}
getchar();
return ok;
}
int main()
{
/*freopen("F:\rush.txt", "r", stdin);*/
int kase = 0;
while (getline(cin,s[1]) && s[1][0]!='Z')
{
if (kase > 0) puts("");
kase++;
printf("Puzzle #%d:
",kase);
for (int i = 2; i <= 5; i++) getline(cin, s[i]);
for (int i = 1; i <= 5; i++)
for (int j = 1; j <= 5; j++)
{
S[i][j] = s[i][j - 1];
if (S[i][j] == ' ')
{
x = i, y = j;
}
}
if (ok())
{
for (int i = 1; i <= 5; i++)
for (int j = 1; j <= 5; j++)
{
cout << S[i][j];
if (j == 5) cout << endl;
else cout << ' ';
}
}
else
cout << "This puzzle has no final configuration." << endl;
}
return 0;
}