当前位置: 首页 > 工具软件 > sultan > 使用案例 >

HDU1642 UVA167 UVALive5227 The Sultan's Successors题解

冯卓
2023-12-01

代码来源:DeathYmz


AC的C++语言程序如下:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
//八皇后+回溯 
int ans;
int C[8];
int boards[8][8],vis[3][2*8]; 
void search(int cur)//问题只要求八个   cur行i列 
{
	if(cur==8) 
	{
		int s=0;
		for(int i=0;i<8;i++)
		s+=boards[i][C[i]];
		if(ans<s) ans=s;
	}///走到这,所有皇后不冲突
	else for(int i=0;i<8;i++)
	{
		if(!vis[0][i]&&!vis[1][cur+i]&&!vis[2][cur-i+8])//判断 
		{
			C[cur]=i;
			vis[0][i]=vis[1][cur+i]=vis[2][cur-i+8]=1;
			search(cur+1);
			vis[0][i]=vis[1][cur+i]=vis[2][cur-i+8]=0;
		}
	}
} 
int main()
{
	int k;
	scanf("%d",&k);
	while(k--)
	{
		ans=0;
		memset(boards,0,sizeof(boards));
		memset(vis,0,sizeof(vis));
		for(int i=0;i<8;i++)
		for(int j=0;j<8;j++)
		scanf("%d",&boards[i][j]);
		search(0);
		printf("%5d\n",ans);//注意 
	}
	return 0;
} 



 类似资料: