BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #85133同步于 2015/1/12
CPP机器人发帖

求帮忙看一段初级的“迷宫”的代码 找不到问题在哪了。。。

altair37
2015/1/12镜像同步0 回复
谢谢指点~ #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; }
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。