生产可能性曲线的概念:八皇后问题求12组实质解的C语言程序?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 12:44:10
怎样用C语言编程实现求八皇后问题全部92组解中的12组实质解?
给出大致的思路也行~~谢谢~~
关于实质解: 就是指这12个解都不能通过互相旋转或对称得到。
在92组解里有11个解通过水平翻转、竖直翻转、关于主对角线翻转、关于副对角线翻转能得到7个衍生解,加上本身是8个解;
还有一个解是中心对称的,所以它通过以上翻转和旋转只能得到3个衍生解。

不太懂什么是实质解?可以补充说明一下么?
#include "stdio.h"
static char Queen[8][8];
static int a[8];
static int b[15];
static int c[15];
static int iQueenNum=0;
void qu(int i);
int main()
{
int iLine,iColumn;
for(iLine=0;iLine<8;iLine++)
{
a[iLine]=0;
for(iColumn=0;iColumn<8;iColumn++)
Queen[iLine][iColumn]='*';
}
for(iLine=0;iLine<15;iLine++)
b[iLine]=c[iLine]=0;
qu(0);
return 0;
}
void qu(int i)
{
int iColumn;
for(iColumn=0;iColumn<8;iColumn++)
{
if(a[iColumn]==0&&b[i-iColumn+7]==0&&c[i+iColumn]==0)
{
Queen[i][iColumn]='@';
a[iColumn]=1;
b[i-iColumn+7]=1;
c[i+iColumn]=1;
if(i<7) qu(i+1);
else
{
int iLine,iColumn;
printf("%d:\n",++iQueenNum);
for(iLine=0;iLine<8;iLine++)
{
for(iColumn=0;iColumn<8;iColumn++)
printf("%c ",Queen[iLine][iColumn]);
printf("\n");
}
printf("\n\n");
}
Queen[i][iColumn]='*';
a[iColumn]=0;
b[i-iColumn+7]=0;
c[i+iColumn]=0;
}
}
}
在不超过最多的解92时,想求多少个解都可以呀!
是不是指除了翻转棋盘的重复情况剩下的12个解哈?

才十分!

坚决不答