精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>算法集锦--------梦入玄机>>班门弄斧--我的--八王后

主题:班门弄斧--我的--八王后
发信人: sunlightonriver(成吉思汗)
整理人: wenbobo(2002-06-11 19:08:06), 站内信件
#define Number 8
#include <stdio.h>
#include <math.h>
void main(void)
{
signed int Count=0,DismatchFlag=0,Current=0,Temp=0,_Current=0,MoveFlag=0;
int Queen[Number]={0,0,0,0,0,0,0,0};
Queen[0]=0;
do{
if(!MoveFlag) /*设置下一个王后。若此时是找到一种布局后的调整则不放下一个王后*/
{
Queen[++Current]=0;
}
MoveFlag=0; /*清除调整布局不放王后的标志*/
do{
for(Temp=Current-1;Temp>=0;Temp--) /*同已摆下王后的冲突判断*/
{
if(Queen[Current]==Queen[Temp]||(Current-Temp==abs(Queen[Current]-Queen[Temp]))||Queen[Current]>7) /*冲突条件*/
{
DismatchFlag=1; /*冲突标志*/
break;
}
}
if(DismatchFlag) /*冲突调整*/
{
if(Queen[Current]>=7) /*当前王后已到最后一列则清除该王后,上一个王后摆到下一列*/
{
Queen[Current--]=0;
Queen[Current]++;
DismatchFlag=0;
}
else /*没到最后一列则该王后摆到下一列*/
{
Queen[Current]++;
DismatchFlag=0;
}
}
else /*没冲突则结束该循环*/
break;
}while(1);
if(Current==7) /*这是一种布局吗?*/
{
printf("now program found a setting.\n"); /*get a result;*/
Count++;
printf("%d\t%d\t%d\t%d\t",Queen[0],Queen[1],Queen[2],Queen[3]);
printf("%d\t%d\t%d\t%d\t",Queen[4],Queen[5],Queen[6],Queen[7]);
getchar();
if(Queen[Current]==7) /*是一种布局则调整当前王后*/
{
Queen[--Current]++;
MoveFlag=1;
}
else 
{
Queen[Current]++;
MoveFlag=1;
};
}
}while(!(Queen[0]==8)); /*历遍了所有布局吗?*/
printf("now the Setting have %d type",Count);
}


----
 #include<爱情>
(无结果)main(无付出)
{
if(没有爱的勇气)
{请别来撩动我的心弦;让我把你从我记忆中格式化掉;}
else
{让我们爱他个天翻地覆and海枯石烂;}
}

[关闭][返回]