您的位置:首页 > 其它

算法竞赛入门经典第三章3-5 Puzzle UVA - 227

2018-01-03 13:41 489 查看
3-5习题

https://vjudge.net/problem/UVA-227

#include<iostream>
#include<string>
using namespace std;
int main() {
string s[5],str,sss;
int x, y,tt;
int flag ;
int cnt = 0;
while (getline(cin, s[0]) && s[0] != "Z") {
++cnt;
if (s[0].size() == 4) s[0]+= " ";
if ((tt = s[0].find(' ')) != string::npos) { x = 0; y = tt; }
for (int i = 1; i < 5; ++i) {
getline(cin, s[i]);
if (s[i].size() == 4) s[i] += " ";
if ((tt = s[i].find(' ')) != string::npos) { x = i; y = tt; }
}
str = "";
do {
getline(cin, sss);
str += sss;
} while (str.back() != '0');
flag = 0;
for (int i = 0; i < str.size() - 1; ++i) {
switch (str[i])
{
case 'A':
if (!x) { flag = 1; break; }
swap(s[x][y], s[x - 1][y]);
x -= 1;
break;
case 'B':
if(x==4) { flag = 1; break; }
swap(s[x][y], s[x + 1][y]);
x += 1;
break;
case 'L':
if(!y) { flag = 1; break; }
swap(s[x][y], s[x][y - 1]);
y -= 1;
break;
case 'R':
if(y==4) { flag = 1; break; }
swap(s[x][y], s[x][y + 1]);
y += 1;
break;
default:
break;
}
if (flag) break;
}
if (cnt > 1) printf("\n");
printf("Puzzle #%d:\n", cnt);
if (flag) printf("This puzzle has no final configuration.\n");
else {
for (int i = 0; i < 5; ++i) {
printf("%c", s[i][0]);
for (int j = 1; j < 5; ++j)
printf(" %c", s[i][j]);
printf("\n");
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: