C语言八皇后问题,高分求救
八皇后问题,我编了一个程序,编完了也不知道哪里不对,谢谢各路高手了!#include"stdio.h"#include"stdlib.h"#defineMAX8intxx...
八皇后问题,我编了一个程序,编完了也不知道哪里不对,谢谢各路高手了!
#include"stdio.h"
#include"stdlib.h"
#define MAX 8
int xx[MAX][MAX];
int a[8]={0},b[15]={0},c[15]={0};
void qu(int i);
void output();
void main()
{
int n;
qu(0);
}
void qu(int i)
{
int j;
for(i=0;i<8;i++)
{ for(j=0;j<8;j++)
{
if(a[j]==0&&b[i-j+7]==0&&c[i+j]==0)
{
xx[i][j]=1;
a[j]=1;b[i-j+7]=1;c[i+j]=1;
if(i<7)
qu(i+1);
else
{
output();
}
}
}
}
void output()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(xx[i][j]==0)
printf("#");
else
printf("*");
}
printf("\n");
}
printf("----------------------\n");
} 展开
#include"stdio.h"
#include"stdlib.h"
#define MAX 8
int xx[MAX][MAX];
int a[8]={0},b[15]={0},c[15]={0};
void qu(int i);
void output();
void main()
{
int n;
qu(0);
}
void qu(int i)
{
int j;
for(i=0;i<8;i++)
{ for(j=0;j<8;j++)
{
if(a[j]==0&&b[i-j+7]==0&&c[i+j]==0)
{
xx[i][j]=1;
a[j]=1;b[i-j+7]=1;c[i+j]=1;
if(i<7)
qu(i+1);
else
{
output();
}
}
}
}
void output()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(xx[i][j]==0)
printf("#");
else
printf("*");
}
printf("\n");
}
printf("----------------------\n");
} 展开
2个回答
展开全部
#include"stdio.h"
#include"stdlib.h"
#define MAX 8
int xx[MAX][MAX];
int a[8]={0},b[15]={0},c[15]={0};
int count=0;
void qu(int i);
void output();
void main()
{
qu(0);
printf("count=%d\n",count);
}
void qu(int i)
{
int j;
for(j=0;j<8;j++)
{
if(a[j]==0&&b[i-j+7]==0&&c[i+j]==0)
{
xx[i][j]=1;
a[j]=1;b[i-j+7]=1;c[i+j]=1;
if(i<7)
qu(i+1);
else
{
count++;
output();
}
a[j]=0;b[i-j+7]=0;c[i+j]=0;
xx[i][j]=0;
}
}
}
void output()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(xx[i][j]==0)
printf("#");
else
printf("*");
}
printf("\n");
}
printf("----------------------\n");
}
程序如上,修改了可以运行,并且我加个记录多少个解,
一共92个。
可以输出运行看到结果。
改动不大,如果不太明白的话,可以hi我。
#include"stdlib.h"
#define MAX 8
int xx[MAX][MAX];
int a[8]={0},b[15]={0},c[15]={0};
int count=0;
void qu(int i);
void output();
void main()
{
qu(0);
printf("count=%d\n",count);
}
void qu(int i)
{
int j;
for(j=0;j<8;j++)
{
if(a[j]==0&&b[i-j+7]==0&&c[i+j]==0)
{
xx[i][j]=1;
a[j]=1;b[i-j+7]=1;c[i+j]=1;
if(i<7)
qu(i+1);
else
{
count++;
output();
}
a[j]=0;b[i-j+7]=0;c[i+j]=0;
xx[i][j]=0;
}
}
}
void output()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
if(xx[i][j]==0)
printf("#");
else
printf("*");
}
printf("\n");
}
printf("----------------------\n");
}
程序如上,修改了可以运行,并且我加个记录多少个解,
一共92个。
可以输出运行看到结果。
改动不大,如果不太明白的话,可以hi我。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询