C++ DFS问题求解(POJ 3009)http://poj.org/problem?id=3009

#include<iostream>#include<string.h>usingnamespacestd;intmov[8]={1,0,-1,0,0,1,0,-1};i... #include<iostream>
#include <string.h>
using namespace std;
int mov[8]={1,0,-1,0,0,1,0,-1};
int map[20][20];
int ans=11;
int s1,s2,g1,g2;
int m,n;
bool b=false;

void dfs(int x,int y,int move,int a[20][20]){

for(int k=0;k<=6;k+=2){
int x1=x+mov[k]; int y1=y+mov[k+1];
if (a[x1][y1]!=1){

if((x1<0)||(x1>=n)||(y1<0)||(y1>=m)) {}
else {
while((a[x1][y1]==0)||(a[x1][y1]==2)){
x1+=mov[k]; y1+=mov[k+1];
}
if(a[x1][y1]==1){
a[x1][y1]=0; dfs(x1-mov[k],y1-mov[k+1],move+1,a); a[x1][y1]=1;
}
else if (a[x1][y1]==3) {
b=true; if(move+1<ans) ans=move+1;
}
}
}
}
}

int main(){
while((cin>>m>>n)&&(m!=0)){
ans=10000;
for(int i=0;i<n;++i) {

for(int j=0;j<m;++j){
cin>>map[i][j];
if(map[i][j]==2){s1=i; s2=j;}
if(map[i][j]==3){g1=i;g2=j;}
}}
dfs(s1,s2,0,map);
if ((b!=0)&&(ans<11)) cout<<ans<<endl;
else cout<<"-1"<<endl;
}
}
为什么第二组数据是错的。。另外求大神带带,留下扣扣
展开
 我来答
业丶水寒
推荐于2016-09-03
知道答主
回答量:5
采纳率:0%
帮助的人:2.6万
展开全部

http://paste.ubuntu.com/12519276/

这是我的AC code 你可以对拍下

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式