求助,4~6 TLE
查看原帖
求助,4~6 TLE
592238
Elairin176楼主2022/12/11 09:23
#include <iostream>
#include <cstring>
using namespace std;
int t,n,m,a[10][10],dx[9]={0,1,-1,0,0,1,1,-1,-1},dy[9]={0,0,0,-1,1,-1,1,-1,1},cnt[10][10];
inline int max(int a,int b){
	return a>b?a:b;
}
inline int dfs(){
	int ans=0;
	for(int i=0;i<n;++i){
		for(int j=0;j<m;++j){
			if(cnt[i][j]){
				continue;
			}
			for(int k=0;k<9;++k){
				int xx=i+dx[k],yy=j+dy[k];
				if(xx<0||yy<0||xx>=n||yy>=m){
					continue;
				}
				cnt[xx][yy]++;
			}
			ans=max(ans,a[i][j]+dfs());
			for(int k=0;k<9;++k){
				int xx=i+dx[k],yy=j+dy[k];
				if(xx<0||yy<0||xx>=n||yy>=m){
					continue;
				}
				cnt[xx][yy]--;
			}
		}
	}
	return ans;
}
inline int read(){
	char c=getchar();
	int x=0;
	while(c<'0'||c>'9'){
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x*=10;
		x+=c-'0';
		c=getchar();
	}
	return x;
}
int main(void){
	freopen("data.txt","r",stdin);
	t=read();
	while(t--){
		n=read();
		m=read();
		for(int i=0;i<n;++i){
			for(int j=0;j<m;++j){
				a[i][j]=read();
			}
		}
		printf("%d\n",dfs());
	}
}
2022/12/11 09:23
加载中...