现在做什么可以挣钱:用回溯+随机法求解8皇后问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 02:21:34
请教各位大侠:回溯法怎样和随机法结合呀?
(能给出c语言代码最好了)

#include
#include

int total=0;//方案计数

void main()
{
int queen[8];
int i,j,k;
for(i=0;i<8;i++) queen[i]=0;//八皇后全部放在0列
for(i=1;;)//首先安放第0行皇后
{
if(queen[i]<8)
{
k=0;//检查与第k个皇后是否相互攻击
while(k k++;
if(k<=i-1)//如果与第k个皇后相互攻击
{
queen[i]++;//第i个皇后右移一列
continue;
}
i++;//无冲突,安置下一行皇后
if(i<8) continue;
for(j=0;j<8;j++) cout< cout<<" ";
total++;//方案数加1
if(total%5==0) cout< queen[7]++;//第7个皇后右移一列,前7个不动
i=7;//制造机会,如果不成功则回溯
}
else
{
queen[i]=0;//当前皇后回归0列
i--;//回溯到前一行皇后
if(i<0){//回溯到数组0行之前,结束
cout<<"Total="< return;
}
else queen[i]++;//前一行皇后右移一列
}

}
}

if(queen[i]<8)
{
...
queen[7]++; i=7; ...
}
else
{
...
i--; ...
}