样例没过,求调
查看原帖
样例没过,求调
616964
Adolfo_North楼主2023/1/1 13:53
#include<iostream>
using namespace std;
int n,m,ans;
int a[9][9];
//int l[101],xxx;
bool f[9][9];
void maxf(int x,int y,int an){
	if(x==n&&y>m){
		/*
		if(an==331){
			cout<<xxx<<endl;
			for(int i=1;i<=xxx;i++){
				cout<<l[i]<<endl;
			}
		}
		*/
		ans=max(ans,an);
		return;
	}
	if(y>m) {
		maxf(x+1,1,an);
		return;
	}
	if(f[x][y]){
		maxf(x,y+1,an);
		return;
	}
	if(f[x][y]==0){
		f[x][y]=1;
		f[x-1][y-1]=f[x-1][y]=f[x-1][y+1]=f[x][y-1]=f[x][y+1]=f[x+1][y-1]=f[x+1][y]=f[x+1][y+1]=1;
		//l[++xxx]=a[x][y];
		maxf(x,y+2,an+a[x][y]);
		//l[--xxx]=0;
		f[x][y]=0;
		f[x-1][y-1]=f[x-1][y]=f[x-1][y+1]=f[x][y-1]=f[x][y+1]=f[x+1][y-1]=f[x+1][y]=f[x+1][y+1]=0;
	}
	maxf(x,y+1,an);
}
int main()
{
	int  T;
	cin>>T;
	while(T--){
		cin>>n>>m;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
			}
		}
		ans=-1;
		maxf(1,1,0);
		cout<<ans<<endl;
	}
    return 0;
}

2023/1/1 13:53
加载中...