我做poj第1979题,提交之后总显示runtime error,求怎么解决

zhcnyuyang 2016-09-17 11:16:21
如题,代码如下:

#include<cstdio>
#include<stdlib.h>
#include<iostream>
#include<string.h>
using namespace std;
int x,y,x0,y0;
int step[10];
char c[10][100][100];
int p=1;
int main(){
int i=0;
extern void solve(int,int,int,int);
for(;;){
i++;
p=i;
cin>>y>>x;
if(x==0&&y==0){
goto s;
}
for(int j=1;j<=x;j++){
for(int k=1;k<=y;k++){
cin>>c[i][j][k];
if(c[i][j][k]=='@'){
x0=j;
y0=k;
}
}
}
solve(x,y,x0,y0);
}
s:
for(int i=1;i<=4;i++){
cout<<step[i]<<"\n";
}
return 0;
}

void solve(int x1,int y1,int a,int b){
/*cout<<"\n";
for(int i=1;i<=x;i++){
for(int j=1;j<=y;j++){
//cout<<c[p][i][j];
if(i==a&&j==b){
cout<<'@';
}
else{
cout<<c[p][i][j];
}
}
//
cout<<"\n";
}
cout<<step[p];*/
c[p][a][b]='#';
step[p]++;
if(a>1){
if(c[p][a-1][b]!='#'){
solve(x1,y1,a-1,b);
}
}
if(a<x){
if(c[p][a+1][b]!='#'){
solve(x1,y1,a+1,b);
}
}
if(b>1){
if(c[p][a][b-1]!='#'){
solve(x1,y1,a,b-1);
}
}
if(b<y){
if(c[p][a][b+1]!='#'){
solve(x1,y1,a,b+1);
}
}
}

...全文
295 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2016-09-19
  • 打赏
  • 举报
回复
for循环里下标都是从1开始的,确定对吗 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
Jackxan 2016-09-17
  • 打赏
  • 举报
回复
VS2010 控制台程序下编译、运行正常。 你是什么开发环境?
paschen 版主 2016-09-17
  • 打赏
  • 举报
回复
c[p][a][b]='#'; 这里会越界吧

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧