返回信息流谢谢指点~
#include <iostream>
using namespace std;
int main(){
int k, n[102];
char a[100][110][110];
int ha[100], la[100], hb[100], lb[100];
int flag;
//shuru
cin >> k;
for (int i1 = 0; i1 < k; i1++){
cin >> n[i1];
for (int j1 = 1; j1 < n[i1]+1; j1++){ //上下加空行
cin >> a[i1][j1];
}
cin >> ha[i1];
cin >> la[i1];
cin >> hb[i1];
cin >> lb[i1];
}
//加框
for (int k2 = 0; k2 < k; k2++){
for (int i2 = 0; i2 < n[k2] + 2; i2++){
for (int j2 = n[k2] + 1; j2 >= 0; j2--){
a[k2][i2][j2] = a[k2][i2][j2 - 1];
if (i2 == 0 || i2 == n[k2] + 1)a[k2][i2][j2] = '#';
if (j2 == 0 || j2 == n[k2] + 1)a[k2][i2][j2] = '#';
}
}
}
//反复遍历数组 变化可达到区域为‘@’
for (int k3 = 0; k3 < k; k3++){
flag = 0;
if (a[k3][ha[k3] + 1][la[k3] + 1] == '.'){
a[k3][ha[k3] + 1][la[k3] + 1] = '@'; flag++;
// cout << a[k3][ha[k3] + 1][la[k3] + 1];
}
for (int i3 = 1;; i3++){
for (int j3 = 1; j3 < n[k3] + 2; j3++){
if (a[k3][i3][j3] == '@'){
if (a[k3][i3][j3 + 1] == '.')
{
a[k3][i3][j3 + 1] = '@'; flag++;
// cout << a[k3][i3][j3 + 1];
}
if (a[k3][i3][j3 - 1] == '.')
{
a[k3][i3][j3 - 1] = '@'; flag++;
// cout << a[k3][i3][j3 - 1];
}
if (a[k3][i3 + 1][j3] == '.')
{
a[k3][i3 + 1][j3] = '@'; flag++;
// cout << a[k3][i3 + 1][j3];
}
if (a[k3][i3 - 1][j3] == '.')
{
a[k3][i3 - 1][j3] = '@'; flag++;
// cout << a[k3][i3 - 1][j3];
}
}
}
if (i3 == (n[k3] + 2) && flag == 0){
break;
}
if (i3 == (n[k3] + 2) && flag != 0){
i3 = 1;
flag = 0;
}
}
if (a[k3][hb[k3]+1][lb[k3]+1] == '@')cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #85133同步于 2015/1/12
CPP机器人发帖
求帮忙看一段初级的“迷宫”的代码 找不到问题在哪了。。。
altair37
2015/1/12镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。