求助P1123 (违规紫衫)
  • 板块灌水区
  • 楼主yangchen122
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/5/2 11:13
  • 上次更新2024/5/2 14:54:43
查看原帖
求助P1123 (违规紫衫)
946927
yangchen122楼主2024/5/2 11:13
#include<bits/stdc++.h>
using namespace std;
int T;
int n,m;
int a[10][10]; 
bool vis[10][10];
int dx[8]={1,1,1,-1,-1,-1,0,0};
int dy[8]={1,0,-1,1,0,-1,1,-1};
int ans;
void dfs(int sum,int last){
	ans=max(ans,sum);
	for(int i=last;i<=n;i++){
		for(int j=1;j<=m;j++){
			bool ok=true;
			if(vis[i][j]==1)
				continue;
			for(int k=0;k<8;k++){
				int x=i+dx[k],y=j+dy[k];
				if(vis[x][y]==1){
					ok=false;
				}
			}
			if(ok){
				vis[i][j]=1;
				dfs(sum+a[i][j],i);
				vis[i][j]=0;
			}
		}
	}
}
int main()
{
	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=0;
		dfs(0,1);
		cout<<ans<<endl;
	}
	return 0;
}

最后一个点TLE了,83分,求dalao调一下

2024/5/2 11:13
加载中...