LasVegas算法 n皇后问题

本文详细介绍了使用LasVegas算法来解决经典的n皇后问题。通过实例解析,展示了如何在C++中实现该算法,确保在棋盘上放置n个皇后,使得任意两个皇后不会在同一行、同一列或同一斜线上。探讨了算法的效率和优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
 * Abstract:
 *         EX7. 写一LasVegas算法求n皇后问题,求n=12~20时,最优的StepVegas的值。
 *         
		
 * Author : Ace.Ma
 * Date   : 2012/9/18
 * Version: 0.1 
 */
#include<iostream>
#include<iomanip>
#include<ctime>
#include<set>
#include<cmath>
#include"Queen.h"

using namespace std;


void test()
{
	for( int n=12; n<=20; ++n)
	{
		cout<<"皇后个数 n="<<n<<endl;
		cout<<setw(10)<<"stopVegas"<<setw(10)<<"p"<<setw(10)<<"s"<<setw(10)<<"e"<<setw(10)<<"t"<<endl;
		for( int stopVegas=0; stopVegas<=n; ++stopVegas)
		{
			long failCount = 0;
			long sucessVistedNodes = 0;
			long failVistedNodes = 0;
			int vistedNodes =0;
			for (int j=0; j<10; ++j) //对于特定的n和stepVegas,求10次的平均性能
			{
				while(1)
				{
					if(nQueen(n,stopVegas,vistedNodes))
					{
						sucessVistedNodes += vistedNodes;
						break; //一次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值