dfs求解,发现数组越界了,应该是递归条件出错,帮忙看一下条件应该怎么改,谢谢。
查看原帖
dfs求解,发现数组越界了,应该是递归条件出错,帮忙看一下条件应该怎么改,谢谢。
682044
czk111楼主2022/3/29 19:04
#include <iostream>

using namespace std;
int a,b,c,d,g[30][30],u[30][30];
void dfs(int x,int y){
	if(x<0&&x>a&&y<0&&y>b&&u[x][y]==1){
		return;
	}else{
		g[x][y]++;
		dfs(x+1,y);
		dfs(x,y+1);
	}
}
int main(int argc, char** argv) {
	cin>>a>>b>>c>>d;
	u[c][d]=1;
	u[c-1][d-2]=1;
	u[c+1][d-2]=1;
	u[c+2][d-1]=1;
	u[c+2][d+1]=1;
	u[c+1][d+2]=1;
	u[c-1][d+2]=1;
	u[c-2][d+1]=1;
	dfs(0,0);
	for(int i=0;i<a;i++){
		for(int j=0;j<b;j++){
			cout<<u[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
2022/3/29 19:04
加载中...