C語言 赦免戰俘題目

2021-10-14 03:55:39 字數 998 閱讀 8569

題目描述

現有 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...