社区讨论

为啥我只能循环一次?

P1123取数游戏参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mi86jo3b
此快照首次捕获于
2025/11/21 09:26
4 个月前
此快照最后确认于
2025/11/21 09:26
4 个月前
查看原帖
CPP
#include<cstdio>
const char dx[]={0,1,1,0,-1};
const char dy[]={0,0,1,1,1};
char n,m,t;
int jz[7][7],op;bool bf[8][8];
	inline void dfs(int x,int y,int po)
	{
		if(x>n)
		x=1,y++;
		if(y>m)
		{
			if(po>op)
			op=po;
			return;
		}
	 	dfs(x+1,y,po);
	 	if(bf[x][y])
	 	return;
	 	for(int i=1;i<=4;i++)
	 	bf[x+dx[i]][y+dy[i]]=true;
	 	dfs(x+1,y,po+jz[x][y]);
	 	for(int i=1;i<=4;i++)
	 	bf[x+dx[i]][y+dy[i]]=false;
	}
	inline int mai()
	{
		scanf("%d%d",&n,&m);
		for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		scanf("%d",&jz[i][j]);
		dfs(1,1,0); 
		return op;
	}
int main()
{
	scanf("%d",&t);
	printf("%d",t);
	//printf("%d",yzc::main());
	for(int maini=1;maini<=t;maini++)
	printf("%d\n",mai());
}

回复

1 条回复,欢迎继续交流。

正在加载回复...