P5461 赦免戰俘(遞迴)

2021-10-18 09:47:46 字數 1008 閱讀 2967

這題就是要用遞迴來寫。

就是分成四個區域,然後把第一塊全部賦值為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/2-

1;i++)}

dfs(p/

2,p/

2+x,y)

;dfs

(p/2

,p/2

+x,p/

2+y)

;dfs

(p/2

,x,p/

2+y);}

intmain()

}dfs

(p,1,1

);//遞迴

for(

int i=

1;i<=p;i++

) cout<

[p]<

}}

尋找不被赦免的戰俘,將其賦值為1。

由題可以知道:三個方向要賦值為1.

則要寫3層遞迴。

#include

using

namespace std;

int a[

1050][

1050

],n;

void

cal(

int x,

int y,

int n)

}int

main()

cout<

}return0;

}

P5461 赦免戰俘

又是一道眼高手低的題目,考察的是最基礎的遞迴,然而我又錯了 畫個圖方便理解 很容易想到用遞迴,用遞迴的話,先考慮遞迴的邊界,就是遞迴何時結束 對於乙個正方形陣列,首先將其分為四份,左上角那一塊全部赦免,再依次遞迴其餘三部分,當這個正方形陣列的邊長為2時,就可以結束遞迴了。1 include 2 us...

LGOJ P5461 赦免戰俘

乙個 2n 2n 2 n times2 n 2n 2 n 的矩陣,每個位置站著乙個作弊者,每次將正方形矩陣分割成4個更小的正方形矩陣,每個矩陣的邊長是原矩陣的一半。其中左上角那乙個矩陣的所有作弊者都將得到赦免,剩下的三個矩陣中,每乙個矩陣繼續分為 4 個更小的矩陣,然後以同樣的方式分割矩陣,以同樣的...

P2016 戰略遊戲

樹形dp f u 0 表示 uf u 0 表示u f u 0 表示u 號節點不放士兵,以x為根的子樹需要的最少士兵數。f u 1 表示 uf u 1 表示u f u 1 表示u 號節點放士兵,以x為根的子樹需要的最少士兵數。由於我們定義的是將其完全覆蓋,則我們不需要考慮父親節點,為什麼?當我們已經回...