玄关求调
查看原帖
玄关求调
1042335
Tennantloyaldog楼主2024/6/1 20:22

c++全WA

#include<bits/stdc++.h>
using namespace std;
int n,m;
int t;
int a[10][10];
int vis[10][10];
int maxx;
int x[8]={0,-1,-1,-1,0,1,1,1};
int y[8]={-1,-1,0,1,1,1,0,-1};
bool judge(int r,int c){
	if(r<1||r>n||c<1||c>m)return 0;
	if(vis[r][c]>0)return 0;
	return 1;
}
void dfs(int sum,int px,int py){
	maxx=max(sum,maxx);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(judge(i,j)&&(i>=px&&j>py)){
				vis[i][j]=1;
				for(int k=0;k<8;k++){
					vis[i+x[k]][j+y[k]]++;
				}
				dfs(sum+a[i][j],i,j);
				for(int k=0;k<8;k++){
					vis[i+x[k]][j+y[k]]--;
				}
				vis[i][j]=0;
			}
		}
	
	}
}
int main(){
	cin >> t;
	for(int l=1;l<=t;l++){
		maxx=1;
		cin >> n >> m;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				cin >> a[i][j];
		dfs(0,0,0);
		cout << maxx << endl;
	}
	return 0;
}
2024/6/1 20:22
加载中...