II.有借有還
電電:「ㄝㄝ上次老師出的資訊作業你寫了嗎?」
串串:「你是說那個8皇后問題的作業嗎?有阿。」
電電:「拜託借我抄一下拉\(下課請你飲料。」
串串:「靠X,每次都抄我的,你抄我作業的次數比這整個judge上的題目還多吧。好啦借你抄拉,你欠我一次。」
電電:「好啦我以後有機會會還的\)(卑鄙原之助)」
電電:「話說...你的程式是不是有點小問題啊?」
串串:「哪有可能?你自己跑看看就知道了,就不信你能找到什麼問題。」
電電:「喔...」
串串:「記得喔!你欠我的。」
電電:「ㄝ很派ㄝ。」
題目敘述:
輸入1個數字T,給出T組不同的8皇后問題解(只要棋盤配置不同即是為不同)。
輸入說明:
一個數字T(\(T \leq 50\))。
輸出說明:
給出T組不同的8皇后問題解,每個解由8*8的0或1方陣組成(1表示有皇后在該格)。
程式碼:
#include<iostream>
using namespace std;
unsigned t;
int s[8][8] = {};
void solve(int i){
if (i == 8){
for(int a = 0;a < 8;a++){
for(int b = 0;b < 8;b++) cout << s[a][b];
cout << '\n';
}
cout << '\n';
t--;
retu
;
}
for(int a = 0;a < 8;a++){
int cnt = 0; //count how many queens is attacked by current queen
for(int b = 0;b < i;b++) cnt += s[b][a];
for(int x = i-1,y = a-1;(x>=0)&&(y>=0);x--,y--) cnt += s[x][y];
for(int x = i-1,y = a+1;(x>=0)&&(y<8);x--,y++) cnt += s[x][y];
if (!cnt){
s[i][a] = 1;
solve(i+1);
s[i][a] = 0;
if (!t) retu
;
}
}
}
int main(){
cin >> t;
if (t) solve(0);
}
輸入格式
(無)
輸出格式
輸出符合格式的測資,使串串的程式錯誤。
範例輸入
undefined
範例輸出
undefined
評論