Why?
查看原帖
Why?
1279423
zzhengxi楼主2024/12/21 13:12

全MLE。

#include<bits/stdc++.h>
using namespace std;

int n,m,ans;
int mp[10][10];
int ne[8][2] = {{0,1},{1,0},{1,1},{-1,0},{0,-1},{-1,-1},{1,-1},{-1,1}};
bool v[10][10];

bool flag(int x,int y){
	bool b = true;
	if(v[x][y]) return false;
	for(int i = 0 ; i < 8 ; i ++)
		if(v[x + ne[i][0]][y + ne[i][1]] == 1) return false;
	return true;
}

void dfs(int x,int y,int sum){
	if(x == n && y == m){
		ans = max(ans,sum);
		return;
	}
	for(int i = 0 ; i < 8 ; i ++){
		int xx = ne[i][0] + x;
		int yy = ne[i][1] + y;
		if(flag(xx,yy) && xx >= 1 && xx <= n && yy >= 1 && yy <= m){
			dfs(xx,yy,sum + mp[xx][yy]);
		}
	}
}

int main(){
	int t;
	cin >> t;
	while(t --){
		ans = 0;
		memset(v,0,sizeof(v));
		cin >> n >> m;
		for(int i = 1 ; i <= n ; i ++)
			for(int j = 1 ; j <= m ; j ++)
				cin >> mp[i][j];
		dfs(1,1,0);
		cout << ans << '\n';
	}
	return 0;
}
2024/12/21 13:12
加载中...