P1123 取数游戏 求助
  • 板块学术版
  • 楼主ztyZTYzzzzzz
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/1/21 22:09
  • 上次更新2023/10/24 03:23:36
查看原帖
P1123 取数游戏 求助
742025
ztyZTYzzzzzz楼主2023/1/21 22:09
#include<iostream>
#include<math.h>
using namespace std;
int a[8][8];
bool b[8][8];
int p,q;
const int d[8][2]={1,0,-1,0,0,1,0,-1,1,1,-1,1,1,-1,-1,-1};
//int d_x[8] = {0,0,1,1,1,-1,-1,-1};
//int d_y[8] = {1,-1,0,1,-1,0,-1,1};
int sum,sm;
int max(int x,int y)
{
	return (x > y) ? x : y;
}
void dfs(int m,int n){
    if(n == q+1)
	{
		dfs(m+1,1);
		return;
	}
	if(m == p+1)
	{
		sum = max(sum,sm);
	    return;
	}
	dfs(m,n+1);             // 不取数字
	if(!b[m][n]){
	sm += a[m][n];
	for(int i = 0;i < 8;i++){			b[m + d[i][0]][n + d[i][1]] = true;
		}
	    dfs(m,n+1);         //取这个数字
		sm -= a[m][n];
		for( i = 0;i < 8;i++){
b[m + d[i][0]][n + d[i][1]] = false;
		}
	}
}
int main(){
	int n;
	cin>>n;
    while(n--){
		cin>>p>>q;
	for(int i = 1;i <= p;i++)
		for(int j = 1;j <= q;j++)
 			cin>>a[i][j];
		sum = 0;
		dfs(1,1);
		cout<<sum<<endl;
	}
	return 0;
}
这个题 我看的题解大佬的思路模仿着写的
但是  老是不对  实在是想不懂了
望各位大佬指点


2023/1/21 22:09
加载中...