c052: II.有借有還
Tags :
Accepted rate : 1人/1人 ( 100% ) [非即時]
評分方式:
Special

最近更新 : 2021-03-31 19:59

Content

電電:「ㄝㄝ上次老師出的資訊作業你寫了嗎?」

串串:「你是說那個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--;
return;
}
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) return;
}
}
}
int main(){
cin >> t;
if (t) solve(0);
}

 

Input

(無)

Output

輸出符合格式的測資,使串串的程式錯誤。

Sample Input

										
Sample Output

										
測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (100%): 1.0s , <1K
Hint :
Tags:
出處:
april fools 2021 [管理者:
TCIRC ($\mathbb{TCFSH}\mathtt{Computer}\mathsf{Information}\mathit{Club}$)
]


ID User Problem Subject Hit Post Date
65
810848 (路過)
c052
題解
20 2021-04-02 16:15