问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言求8皇后问题的回溯程序,要简单的!!

发布网友 发布时间:2023-09-28 15:21

我来回答

4个回答

热心网友 时间:2024-10-08 10:30

#include "stdio.h"
int attacked(int *array,int position){
int flag=-1;
float step;
if(position==1) return flag;
for(step=1.00;step<position;step++){
if(*(array+(int)step)==*(array+position)||step==position) return
1;
if(((*(array+(int)step)-*(array+position))/(step-position))==1||((*
(array+(int)step)-*(array+position))/(step-position))==-1){
flag=1;
break;
}
}
return flag;
}
void main(void){
int countSum,queenSum,printCount,*queenArray,queenPosition=0;
int tempArray[20]={6666,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
countSum=1;
queenArray=tempArray;
printf("input you queenSum here:");
scanf("%d",&queenSum);
fflush(stdin);
if(queenSum<4){
printf("the %d queen's sum is 0\n",queenSum);
return;
}
for(;;){
if(countSum<queenSum){
if(countSum==1&&*(queenArray+countSum)==1) countSum++;
if(attacked(queenArray,countSum)==1){
if(*(queenArray+countSum)>=queenSum){
if(*(queenArray+countSum-1)<queenSum){
++*(queenArray+(--countSum));
*(queenArray+countSum+1)=0;
}
else{
*(queenArray+countSum--)=0;
if(*(queenArray+countSum)<queenSum) ++*(queenArray+countSum);
else{
if(countSum==1&&*(queenArray+countSum)==queenSum) break;
*(queenArray+countSum--)=0;
++*(queenArray+countSum);
}
}
}
else
++*(queenArray+countSum);
}
else
++*(queenArray+(++countSum));
}
else{
if(attacked(queenArray,countSum)==1){
if(*(queenArray+countSum)>=queenSum){
if(*(queenArray+countSum-1)<queenSum){
++*(queenArray+(--countSum));
*(queenArray+countSum+1)=0;
continue;
}
else{
*(queenArray+countSum--)=0;
if(*(queenArray+countSum)<queenSum) ++*(queenArray+countSum);
else{
*(queenArray+countSum--)=0;
++*(queenArray+countSum);
}
continue;
}
}
else {
++*(queenArray+countSum);
continue;
}
}
queenPosition++;
for(printCount=1;printCount<=queenSum;printCount++)
printf("%3d%",*(queenArray+printCount));
if(printCount>=queenSum) printf("\n");
if(*(queenArray+countSum)>=queenSum){
++*(queenArray+(--countSum)); //the "++" priority is different
from turbo C
*(queenArray+countSum+1)=0;
}
++*(queenArray+countSum);
}
}
printf("the %d queen's sum is %d\n",queenSum,queenPosition);
}

热心网友 时间:2024-10-08 10:31

#include "stdafx.h"
#include <iostream.h>
int bijiao(int q[],int row,int col)
{
int x;
for(x=0;x<row;x++)
{ if(col==q[x] || row+col==x+q[x] || row-col==x-q[x] )
return 0;
}

return 1;

}

int anquan(int q[],int row)
{
int col;

for(col=q[row]+1;col<8;col++){
if( bijiao(q,row,col) )
return col;

}

return -1;

}

int huanghou(int q[])
{
int row,col;

for(row=1;row<8;row++){
q[row]=-1;
}

q[0]=0;
row=1;

while(row>=0&&row<8){
col=anquan(q,row);
if(col!=-1)
q[row++]=col;
else
q[row--]=-1;

}
return (8==row);

}
void main()
{
int q[8];
int x;

huanghou(q);
for(x=0;x<8;x++)
printf(" %2d ",q[x]);

}
尽量最简单化了

热心网友 时间:2024-10-08 10:31

#include <stdio.h>
#include <memory.h>
int sum,lie[8],xie[15],xie1[15];
void q(int n)
{
for(int i=0;i<8;i++)
{
if(lie[i]!=1&&xie[n+i]!=1&&xie1[i-n+7]!=1)
{
lie[i]=xie[n+i]=xie1[i-n+7]=1;
if(n==7)
sum++;
else
q(n+1);
lie[i]=xie[n+i]=xie1[i-n+7]=0;
}
}
}
main()
{
memset(lie,0,sizeof(lie));
memset(xie,0,sizeof(xie));
memset(xie1,0,sizeof(xie1));
sum=0;
q(0);
printf("总共有%d种放法",sum);
}

热心网友 时间:2024-10-08 10:32

gdgzzch.blog.163.com
《n皇后问题》

参考资料:gdgzzch.blog.163.com

求教C语言回溯法写出八皇后问题的92种解

else printf("- ");printf("\n");}printf("\n");}//递归实现全排列,a是数组,iStep是位置的测试点,k是皇后的个数,一般等于8void Settle(int *a,int iStep,int k){int i,j,

用C语言编写八皇后问题

a[row][col]=1; //如果是,将当前位置置为1(摆放一个皇后)if(row==7) //所有的8个皇后都已经摆放好了,输出当前的情况。{ num++;print(a);} else { eightqueen(a,row+1); //在row+1摆放下一个皇后。} a[row][col]=0;} } } //判断同一行列是否有其他的皇后 int up(int a...

用回溯+随机法求解8皇后问题

if(i&lt;8) continue;for(j=0;j&lt;8;j++) cout&lt; cout&lt;&lt;" ";total++;//方案数加1 if(total%5==0) cout&lt; queen[7]++;//第7个皇后右移一列,前7个不动 i=7;//制造机会,如果不成功则回溯 } else { queen[i]=0;//当前皇后回归0列 i--;//回溯到前一行皇后 if(i&lt;0){//回溯到...

求此八皇后C程序的流程图~~急~~要流程图~~

八皇后问题:问题提出:8×8的棋盘上放置8个皇后,在同一横线、竖线、对角线上会产生冲突,求不产生冲突即8个皇后都安全的放置方法。这里改变NCOUNT即可以求出n皇后的n×n棋盘的放置方法 张可彦:kyany@sina.com / include "stdio.h"define NCOUNT 8 int nArray[NCOUNT][NCOUNT];// 判断一个...

8皇后问题

return 1;/*不能攻击到其他皇后,返回 1 */ } void Backtrack(int t,int n,int *x)/*递归回溯求解*/ { int i;if(t&gt;n){ sum++;/*输出一个方案*/ printf("方案%d:",sum);for(i=1;i&lt;=n;i++)printf("(%d,%d) ",i,x[i]);printf("\n");} else for(i=1;i&lt;=n;i++...

回溯法用回溯法解题的一般步骤

首先,八皇后问题是一个经典例子。它要求在8x8的国际象棋棋盘上放置8个皇后,使它们互不攻击。通过定义每个皇后所在的行、列和对角线位置为解空间,我们可以使用回溯法进行搜索。C语言程序中,用数组col跟踪皇后位置,剪枝函数检查是否满足皇后间不攻击的条件。如果满足,继续搜索下一个位置,否则回溯并尝试...

八皇后,回溯法求解(c)

写错了吧:for(j=0;(j=0||j&lt;m)&amp;&amp;(b==0);j++)改为:for(j=0;(j==0||j&lt;m)&amp;&amp;(b==0);j++)for(j=0;(j=0||j&lt;n)&amp;&amp;(b==0);j++)改为:for(j=0;(j==0||j&lt;n)&amp;&amp;(b==0);j++)

递归回溯算法解决八皇后问题

八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。注意点:说明:理论上应该创建一个二维数组来表示棋盘,...

回溯法的用回溯法解题的一般步骤

(1)针对所给问题,定义问题的解空间;(2)确定易于搜索的解空间结构;(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。回溯法C语言举例八皇后问题是能用回溯法解决的一个经典问题。八皇后问题是一个古老而著名的问题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的...

谁有八皇后问题的编程过程

下面是笔者用Turbo C实现的八皇后问题的图形程序,能够演示全部的92组解。八皇后问题动态图形的实现,主要应解决以下两个问题。 1.回溯算法的实现 (1)为解决这个问题,我们把棋盘的横坐标定为i,纵坐标定为j,i和j的取值范围是从1到8。当某个皇后占了位置(i,j)时,在这个位置的垂直方向、水平方向和斜线方向都不...

C语言程序的基本单位 简单c语言程序 c语言源程序的基本单位 用C语言编写的程序被称为 c语言程序编程 用c语言编写的代码程序 C语言程序 一个C语言程序是由 c语言程序100例
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求一个直接的MP4剪辑软件,要求很低,只要将一个视频分成几个就可以了... 成都列五中学很差吗? - 知乎 成都市金牛实验中学(北区)好还是成都的通锦中学好?还没想好上哪个学校... 我在珠村,请问广州机场路怎么走?坐什么车可以到? 芳村车站坐几号线能到广州中医药大学第一附属医院 怎么用Word的 无文本格式粘帖啊? 我想把动物的肉体分解到只剩下骨头'然后做个骨骼标本'我想过用食腐虫... ...就会有人和我说话,就感觉是内心里面的一个人 ae粒子realglow有红叉怎么去掉 芜湖万特乐园,苏中乐园,中华恐龙园哪个比较好玩啊?? 请教一个C语言八皇后问题:我就是不明白它是怎么回溯的,这个程...3 ...老是打嗝,人消瘦了好多,有时候胀气晚上都睡不好,有做过胃镜... 吃完大蒜嘴里味道太难闻!北漂小伙这个小妙招去蒜味,非常实用 请问法院的公务员跨省调动程序如何 眼字笔顺笔画顺序30 广田集团官宣停产了吗 宿州比亚迪4s店可以装自动离合器吗 辽宁交通高等专科学校中职好考吗? 2017年北京大学行政管理专业报考条件是什么? 我报了深圳国旅(深圳市罗湖区迎春路海联大厦11楼)五天四晚港澳游品 ... 晨昏圈与赤道的关系 晨昏线与黄道平面总是90度吗? 均胜电子股票最低价多少?均胜电子股市行情牛叉?均胜电子股票什... 均胜电子股价最低价?查均胜电子今天的股市行情?均胜电子股票近... 均胜电子股票历史最低价是多少?均胜电子股市行情股吧?均胜电子... 均胜电子炒股行情?均胜电子股票价多少?均胜电子为何大跌? 均胜电子股票历史最低价是多少钱?均胜电子股市行情股票?均胜电... 一个奇怪的事情,我苹果xr自动给别人发短信“马上到。”。我确... 求这个故事的原文或者名字1 利是封做灯笼的做法简单鞭炮 4500港币对人民币是多少啊 求段c语言n皇后的代码(回溯) C语言,为什么有两个&#92;n,求解6 C语言题,8皇后问题,帮我讲解一下下面的程序 主页浅表性胃炎和消瘦 买了辆二手车 档案还在我手里 但超过30天了,咋解决? 谁是卧底有没有iphone版的? 晨昏线与经线圈的夹角最大多少?最小呢? 寻找一款谁是卧底游戏,以前玩过,后来找不到了。 1,可以联网,是用来打 ... 汽车电瓶冲不进去电了怎么修复,用充电器也冲不进去? 四川有哪些主要特产?877 花鸟鱼虫,养点什么好呢?46 求解释:一个一向张扬的人,如果遇到一件事情忽然变得低调起来,...1 4500港元换成人民币多少元? ...故消瘦了许多,做过肠镜,胃镜,都说没毛病,会不会是癌症的早期症状... 新买的华为手机,玩游戏的时候经常玩着就没声音,在微信视频通话也经常... 晨昏线与经线圈之间的最大夹角为什么与黄赤交角的度数相同? 春宵一刻值千金是指什么动物?3 体重指数怎么算公式 谁能告诉我歌曲&#171;痛彻心扉的爱&#187;的歌词 龙...5