`
Lisajoy512
  • 浏览: 10217 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

8queen

阅读更多
#include <stdio.h>
#include <iostream.h>
#define QueenNum 8

void output(int solution[QueenNum])
{
for(int i=0;i<QueenNum;i++)
{
cout<<solution[i]<<" ";
}
cout<<"\n";
}

int judge(int solution[QueenNum])
{
for(int i=0;i<QueenNum;i++)
{
for(int j=0;j<QueenNum;j++)
{
if(solution[j] ==0)
{
cout<<"incomplete solution";
output(solution);
return 1;       //incomplete solution
}
else if(i != j && (solution[i] == solution[j] || solution[i]-solution[j] == i-j || solution[i]-solution[j] == j-i)  )
{
cout<<"Error\n";
return 0;       //Error solution
}
}
}
return 2;    //right solution

}

int main(void)
{
int solution[QueenNum];
int k = 0;
bool flag = false;
    for(int i=0;i<QueenNum;i++)
{
solution[i] = 0;

}
int test[QueenNum] = {2,4,3,1};
cout<<"====="<<judge(test);
while(k>=0)
{
while(solution[k]<QueenNum)
{
solution[k] = solution[k]+ 1;
if(judge(solution) == 2)
{
flag = true;
break;
}
else if(judge(solution) == 1)
{
k = k+1;
}
}
if(flag == true)           //find the solution and exit
{
cout<<"========Solution!===========";
output(solution);
break;
}
solution [k] = 0;
k = k-1;
}

return 0;
}

回溯法在纸上画出来是很容易的,但是在具体实现时,个人认为有两点要注意:
1. judge方法,判断solution是否为正解、不完全解或者错误解
2. 当判断为错误解时,怎么回溯,上面的代码里回溯应该是solution[k]已经从1遍历到4,若判断1~4都是错误解,那么就只能回溯到上一步,让solution[k]取solution[k]+1的值
分享到:
评论

相关推荐

    AI_8Queen.zip_8queen_Help!_queen

    本程序"AI_8Queen.zip_8queen_Help!_queen"采用VB6(Visual Basic 6)编程语言,利用爬山法来解决这一问题。 VB6是一种基于事件驱动的编程环境,广泛用于开发Windows应用程序。它的易用性和直观性使得初学者也能...

    8queen_in_c.zip_8queen_queen

    This is the code for 8 Queen prob in C...

    8Queens.zip_8 queen_zip

    8 queen implementation matlab

    8queen问题 源代码

    载的简单的8queen问题,很简单,有用得着的可以下载啦

    8 Queen-代码思想简单易懂

    八皇后问题是一个经典的回溯算法问题,源于19世纪由数学家鲁道夫·费迪南德·莱昂哈德·欧拉提出,旨在在8×8的国际象棋棋盘上放置八个皇后,使得任意两个皇后都无法通过同一行、同一列或对角线互相攻击。...

    8Queen:WinFrom的8 Queen拼图应用程序

    WinFrom的8 Queen拼图应用程序如何使用示例8Queen拼图:许可信息 该软件是开放源代码,根据GNU通用公共许可证版本3.0许可。 有关详细信息,请参见 。 该类库创建了一种处理结构化异常处理的方法,从Exception类继承...

    8queen代码的实现

    用C实现,8皇后的经典算法,其中有注释,希望下载者可以多提宝贵意见,谢谢!

    queen8.zip_queen8、COM

    Matlab,国际象棋棋盘上,八个王后问题,要求王后相互之间都不会吃掉对方。

    huanghou.rar_8 queen_八皇后 _八皇后c

    在一个8×8的棋盘里放置8个皇后,要求每个皇后两两之间不相"冲"发现很少有关于C#的算法,这是最近写的一个八皇后的算法我写了很详细的注解。

    8Queen_Demo.zip

    用VC++解决八皇后问题, 基因算法

    New-Text-Document-(5).rar_queen

    标题中的"New-Text-Document-(5).rar_queen"暗示了这是一个关于“皇后问题”(8 Queen Problem)的Visual C++编程项目。8皇后问题是一个经典的计算机科学问题,源于国际象棋,目标是在8×8的棋盘上放置8个皇后,使得...

    knight“八皇后”问题归朔法求解

    8 Queen's problem is an ancient and famous, the problem is the famous 19th century mathematician Gauss 1850 : in the 8x8 grid placed on the international chess 8 Queen's, making it unable to attack ...

    8queen_annealing:pythoncurses可视化的模拟退火技术来解决8 Queen问题

    八皇后问题-模拟退火技术 模拟退火技术的python / curses可视化解决了8个皇后问题

    BFS.rar_8 puzzle_8 puzzle java_queen

    在IT领域,8-Puzzle和8-Queen问题都是经典的计算机科学问题,通常用于教学和研究算法,特别是搜索算法。在这个“BFS.rar_8 puzzle_8 puzzle java_queen”压缩包中,我们可以推测它包含了一个Java实现,用广度优先...

    8queen:八皇后的C++实现

    八皇后问题的C++实现 只是一个简单的深度优先求解,无聊做来玩的。

    8Q-Test.rar_genetic

    描述中提到的“genetic algorithm and 8queen with genetic”进一步确认了这个压缩包内容的核心——用遗传算法来解决八皇后问题。遗传算法的基本步骤包括初始化种群、选择、交叉和变异。在解决八皇后问题中,种群...

    Queen8.java

    八皇后算法

    The_Queen_v1.1_Win64_简体中文.zip

    8. **图标**:.ico文件,代表软件的图标。 9. **语言文件**:如.zh-CN.lproj或.lang,用于实现简体中文的本地化显示。 由于没有具体的文件列表,我们无法详细分析每个文件的作用。但是,从一般软件发布的角度来看,...

    queen8问题的求解方法

    queen8求解方法的伪代码,有助于正确理解回溯法。

    8queen.rar_软件设计/软件工程_C/C++_

    实现8后问题的实验报告内涵源代码和结果截图,简易。

Global site tag (gtag.js) - Google Analytics