答案不对,求大佬看看为什么
查看原帖
答案不对,求大佬看看为什么
279976
Kiritoooooo楼主2025/1/19 19:31
#include<bits/stdc++.h>

using namespace std;
	
int a[10][10];
int state[10][10]={};  //state=0 没有选取 
int t,n,m,ans;;	

void dfs(int x, int y, int sum){
	int i; 
	//当前行搜索完,换下一行
	if (y>m){
		x++;
		y=1;
	} 
	//所有的行都搜索完,退出 
	if (x>n){
		if (sum>ans)
			ans=sum;
		return;
	}
	//不选当前数字
	dfs(x,y+1,sum);
	
	//选当前数字,需要判断这个数是否可以选
	if (state[x][y-1]==0 && state[x-1][y-1]==0 && state[x-1][y]==0 && state[x-1][y+1]==0){
		state[x][y]==1;
		dfs(x,y+1,sum+a[x][y]);
		state[x][y]=0;
	}	
	return; 
}

int main(){
	int i,j,k;
	cin >> t;
	for (k=1;k<=t;k++){
		cin >> n >> m;
		for (i=1;i<=n;i++)
			for (j=1;j<=m;j++)
				cin >> a[i][j];
		//memset(state,0,sizeof(state));
		ans=0;
		dfs(1,1,0);
		cout << ans << endl;
	}
	return 0;
}

2025/1/19 19:31
加载中...