麻煩請大神幫忙看看問題出在哪,謝謝
#include<stdio.h>
#include<math.h>
#define Max 4
int queen[Max+1]={0};
int count=0;
int IsValid(int m);
void print();
void place(int m);
void main()
{
int m=1;
place(m);
printf("%d",count);
}
void place(int m)
{
for(int i=1;i<=Max;i++)
{
queen[m]++;
if(queen[m]<=Max)
{
if(IsValid(m))
{
if(m==Max)
{
print();
count++;
}
else
place(m+1);
}
}
else
{
queen[m]=queen[m]-Max;
}
}
queen[m]=0;
place(m-1);
}
int IsValid(int m)
{
int i;
for(i=1;i<m;i++)
if(queen[m]==queen[i]||(m-i)==abs(queen[m]-queen[i]))
return 0;
return 1;
}
void print()
{
int i,j;
for(i=1;i<=Max;i++)
{
for(j=1;j<=Max;j++)
if(queen[i]==j)
printf(" 1");
else
printf(" 0");
printf("\n");
}
printf("\n");
}
uj5u.com熱心網友回復:
選過了的。就不能再選了。你沒有做處理轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/49318.html
標籤:語言基礎/算法/系統設計
上一篇:高拍儀如何搞個介面
