?? queue.cpp
字號:
//將8個皇后放在一個8行8列的棋盤,使它們互不沖突,
//即不在同一列、不在同一行、不在同一條對角線上。
#include"stdio.h"
char a[9][9];//棋盤矩陣
int up[16],down[17],col[9];//標志數組,為邏輯值,判定位置是否沖突
int total=0;
void print()//打印棋盤
{
int j,i;
printf("\n");
for(i=1;i<=8;i++)
{printf("\n");
for(j=1;j<=8;j++)
printf("%4c",a[i][j]);
}
}
void try1(int i)
{
int j;
for(j=1;j<=8;j++)
if(up[8+i-j]&&down[i+j]&&col[j])
{a[i][j]='Q';//將皇后i放于位置(i,j)
up[8+i-j]=0;
down[i+j]=0;
col[j]=0;
if(i<8) try1(i+1);
else {total++;print();}
a[i][j]='*';//釋放位置(i,j)
up[8+i-j]=1;
down[i+j]=1;
col[j]=1;
}
}
void main()
{
int j,i;
for(j=1;j<=15;j++) up[j]=1; //主對角線
for(j=2;j<=16;j++) down[j]=1;//次對角線
for(j=1;j<=8;j++) col[j]=1; //同列
for(i=1;i<=8;i++)//置空棋盤
for(j=1;j<=8;j++)
a[i][j]='*';
print();
printf("\n");
try1(1);//試著將1放在正確位置
printf("\ntotal=%d\n",total);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -