題目描述
現有 2 ^n * 2 ^n(n≤10) 名作弊者站成乙個正方形方陣等候 kkksc03 的發落。kkksc03 決定赦免一些作弊者。他將正方形矩陣均分為 4 個更小的正方形矩陣,每個更小的矩陣的邊長是原矩陣的一半。其中左上角那乙個矩陣的所有作弊者都將得到赦免,剩下 3 個小矩陣中,每乙個矩陣繼續分為 4 個更小的矩陣,然後通過同樣的方式赦免作弊者……直到矩陣無法再分下去為止。所有沒有被赦免的作弊者都將被處以棕名處罰。
給出 n,請輸出每名作弊者的命運,其中 0 代表被赦免,1 代表不被赦免。
輸入格式
乙個整數 n。
輸出格式
2^ n * 2 ^n的 01 矩陣,代表每個人是否被赦免。數字之間有乙個空格。
輸入樣例:
3輸出樣例:
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 1
0 0 0 0 0 1 0 1
0 0 0 0 1 1 1 1
0 0 0 1 0 0 0 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
1 1 1 1 1 1 1 1
思路:正方形矩陣不斷被分割為四塊,每一小塊都是採用一樣的方式赦免戰俘,所以運用遞迴的方法。
#include
#include
void
pardon
(int
*start,
int x,
int y)
;int
main()
return0;
}void
pardon
(int
*start,
int x,
int y)
}
LGOJ P5461 赦免戰俘
乙個 2n 2n 2 n times2 n 2n 2 n 的矩陣,每個位置站著乙個作弊者,每次將正方形矩陣分割成4個更小的正方形矩陣,每個矩陣的邊長是原矩陣的一半。其中左上角那乙個矩陣的所有作弊者都將得到赦免,剩下的三個矩陣中,每乙個矩陣繼續分為 4 個更小的矩陣,然後以同樣的方式分割矩陣,以同樣的...
P5461 赦免戰俘
又是一道眼高手低的題目,考察的是最基礎的遞迴,然而我又錯了 畫個圖方便理解 很容易想到用遞迴,用遞迴的話,先考慮遞迴的邊界,就是遞迴何時結束 對於乙個正方形陣列,首先將其分為四份,左上角那一塊全部赦免,再依次遞迴其餘三部分,當這個正方形陣列的邊長為2時,就可以結束遞迴了。1 include 2 us...
P5461 赦免戰俘(遞迴)
這題就是要用遞迴來寫。就是分成四個區域,然後把第一塊全部賦值為0,然後繼續遞迴。結束條件就是正方形的邊為2。include using namespace std int vis 1050 1050 int n void dfs int p,int x,int y for int i x i x p...