0
何文轩
高级守护
高级守护
我这个代码哪里出问题了
#include<iostream>
using namespace std;
int n,m,t;
int xn,xm,yn,ym,cnt;
int dis[7][7],bk[7][7];
int temp[5][2]={{0,1},{1,0},{0,-1},{-1,0}};
bool tmp(int x,int y){
if(x>0 && x<=n && y>0 && y<=m)
return true;
return false;
}
void dfs(int x,int y){
if(x==yn&&y==ym){
cnt++;
return ;
}
int nx,ny;
for(int i=1;i<=4;++i){
nx=temp[i][0]+x;
ny=temp[i][1]+y;
if(dis[nx][ny]==0&&bk[nx][ny]==0&&tmp(nx,ny)==true){
bk[nx][ny]=1;
dfs(nx,ny);
bk[nx][ny]=0;
}
}
}
int main(){
cin>>n>>m>>t;
cin>>xn>>xm>>yn>>ym;
int a,b;
for(int i=1;i<=t;++i){
cin>>a>>b;
dis[a][b]=1;
}
dfs(xn,xm);
cout<<cnt;
return 0;
}
0
0
包涵宇
中级天翼
中级天翼
何文轩
您好!!!
这是DFS吧。。。
你的temp数组写错了!!!
应将:
int temp[5][2]={{0,1},{1,0},{0,-1},{-1,0}};
改为:
int temp[5][2]={{0,0},{0,1},{1,0},{0,-1},{-1,0}};
即可AC!!!
当然,这题也可以用BFS写,应为数据很小
0
0
0
李显晨
中级启示者
中级启示者
顶顶顶顶顶顶 顶顶顶顶顶顶顶顶顶
顶 顶
顶 顶顶顶顶顶顶顶顶顶
顶 顶 顶 顶
顶 顶 顶 顶
顶 顶 顶 顶
顶 顶 顶 顶
顶 顶
顶 顶 顶
顶 顶 顶
顶 顶 顶
顶顶顶 顶 顶
顶 顶
0
0
0
0
0
李思远
中级守护
中级守护