C語言八皇后衝突問題

1449.八皇后的衝突問題

時限:1000ms 內存限制:10000K  總時限:3000ms

描述
八皇后問題是在8*8的國際象棋的棋盤上放置8個皇后,有多少種不同的放置方法,要求它們互相都不衝突(衝突是指在某一行或者某一列或者某一條斜線上出現兩個皇后,因爲這兩個皇后可以互相吃掉對方)。其中行號和列號都從0開始。現在前三行(0~2行)每行一個皇后已經放置好的情況下,第3行的皇后想要放在給定的列,需要你編一個程序判斷它是否與前三行的皇后衝突。
 
輸入
首先輸入3行8列數據(0~2行,0~7列),1表示有皇后,0表示沒有皇后
然後輸入第3行要擺放的皇后的列號。
 
輸出
第3行所給的列號處如果能放皇后,則輸出Yes換行,不可以的話輸出No,注意要有回車。
 
輸入樣例
1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0
1
 
輸出樣例
Yes



 #include<stdio.h>

int main()

{

int m,n,i,j,k,a[8][8];

for(i=0;i<3;i++)

{

for(j=0;j<8;j++)

{

scanf("%d",&a[i][j]);

}

}

scanf("%d%d",&m,&n);

for(i=3;i<8;i++)

{

for(j=0;j<8;j++)

{

a[i][j]=0;

}

}//把3~7行初始化爲0 

for(j=0;j<8;j++)

{

if(a[m][j]==1)

{

printf("No\n");

return 0;

    }

}//判斷行內是否有皇后 

for(i=0;i<8;i++)

{

if(a[i][n]==1)

{

printf("No\n");

return 0;

}

}//判斷列內是否有皇后 

for(i=0;i<8;i++)

{

   if( a[i][i-m+n]==1)

   {

   printf("No\n");

   return 0;

       }

}//判斷右斜行是否有皇后 

for(i=0;i<8;i++)

{

if(a[i][m+n-i]==1)

{

printf("No\n");

return 0;

   }

}//判斷左斜行是否有皇后 

printf("Yes\n");



發佈了52 篇原創文章 · 獲贊 23 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章