代码
  • 板块P1123 取数游戏
  • 楼主qj10
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/14 11:00
  • 上次更新2024/4/14 11:03:58
查看原帖
代码
1043311
qj10楼主2024/4/14 11:00
#include<iostream>
#include<cstring>
using namespace std;
int n,m;
int a[10][10] = {0};
int map[10][10] = {0};
int maxx = 0;
void dfs(int x,int y,int sum){
	maxx = max(maxx,sum);、
	//有规则的移动 列数加1直到列数最大时 ,此时列数 
	int my = y+1;
	int mx = x;
	if(my>m){
		my = 1;
		mx = x+1;
	}
	if(mx>n) return;
	if(!map[mx-1][my-1]&&!map[mx][my-1]&&!map[mx+1][my-1]&&!map[mx-1][my]&&!map[mx+1][my]&&!map[mx-1][my+1]&&!map[mx][my+1]&&!map[mx+1][my+1]){
		map[mx][my]=1;
        dfs(mx,my,sum+a[mx][my]);
        map[mx][my]=0;
	}
	dfs(mx,my,sum);
	return;
}
int main(){
	int t;
	cin>>t;
	for(int i=1;i<=t;i++){//循环t次 
		cin>>n>>m;//这次游戏的地图大小 
		memset(a,0,sizeof(a));//初始化地图数组为0 
        maxx=0;//这组 
        for(int i=1;i<=n;i++){
        	for(int j=1;j<=m;j++){
        		cin>>a[i][j];
			}
		}
		memset(map,0,sizeof(map));
		dfs(1,1,0);
        memset(map,0,sizeof(map));
        map[1][1]=1;
        dfs(1,1,a[1][1]);
        cout<<maxx<<endl;
	}
	return 0;
} 
2024/4/14 11:00
加载中...