?? queen8.cpp
字號:
#include <iostream>
#define n 8 // n為皇后個數,m為擺法計數
using namespace std;
int m=0,a[n];
int check(int i2,int j2)//檢驗是否有棋子
{int ok2;
ok2=0;
if(a[j2]!=i2){
ok2=1;
}
return ok2;
}
int ok(int i, int j) //檢查(i,j)上能否放棋子
{ int i1,j1,ok1;
i1=i;j1=j;ok1=1; //檢查第i行上能否放棋子
while( (j1>1)&&ok1)
{j1--; ok1=check(i1,j1);}
j1=j; i1=i; //檢查對角線上能否放棋子
while( (j1>1)&&(i1>1)&&ok1)
{j1--; i1--; ok1=check(i1,j1);}
j1=j; i1=i; //檢查另一對角線上能否放棋子
while( (j1>1)&&(i1<n)&&ok1)
{j1--; i1++; ok1=check(i1,j1);}
return ok1;
}
void queen(int j) //從第j列開始逐個試探
{ int i;
if (j>n)
{ m++; printf("m=%d ",m);
for (i=1;i<=n;i++) printf(" %d",a[i]);
printf("\n");
}
else for( i=1; i<=n;i++)
{if(ok(i,j)) //檢查(i,j)上能否放棋子
{ a[j]=i; //在(i,j)上放一個棋子
queen(j+1) ;
}
}
main()
{ // a[i]存放第i個皇后放置的行號,
queen(1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -