社区讨论

求助,悬关dfs报废

P1123取数游戏参与者 3已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lo2kinr6
此快照首次捕获于
2023/10/23 15:20
2 年前
此快照最后确认于
2023/10/23 15:20
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
typedef long long ll;
const int MAXN = 1e5 + 5;
const int MAXT = 2e5 + 5;
const int MAXM = 3e5 + 5;
const int MOD = 998244353;
using namespace std;
int t;
int n,m;
int matrix[10][10];
bool vis[10][10];
int maxn = 0;
void dfs(int x,int y,int sum){
	if(x == n && y == m+1){
		maxn = max(maxn,sum);
		return;
	} 
	if(y == n+1){
		y = 1;
		x++;
	}
	dfs(x,y+1,sum);
	if(!vis[x+1][y] && !vis[x-1][y] && !vis[x][y-1] && !vis[x][y+1]){
		vis[x][y] = true;
		dfs(x,y+1,sum+matrix[x][y]);
	} 
	return;
} 
int main(){
	cin >> t;
	while(t--){
		cin >> n >> m;
		for(int i=0;i<=n;i++){
			for(int j=0;j<=m;j++){
				vis[i][j] = false;	
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin >> matrix[i][j];
			}
		}
		dfs(1,1,0);
		cout << maxn << endl;
	} 
	return 0;
}

回复

6 条回复,欢迎继续交流。

正在加载回复...