2016 藍橋杯 省賽 剪郵票(dfs 判重)

2021-09-12 17:34:28 字數 833 閱讀 3010

判重的**有點巧妙,慢慢瞧瞧,就會懂的

剪郵票如【圖1.jpg】, 有12張連在一起的12生肖的郵票。

現在你要從中剪下5張來,要求必須是連著的。

(僅僅連線乙個角不算相連)

比如,【圖2.jpg】,【圖3.jpg】中,粉紅色所示部分就是合格的剪取。

請你計算,一共有多少種不同的剪取方法。

請填寫表示方案數目的整數。

注意:你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。

答案:116

如果說用單純的dfs做的話,像2 5 6 7 10 是無法出來的,所以用剪下來的進行dfs判斷就不會漏掉這類情況了

**:

#include

#include

#include

using

namespace std;

const

int maxn=

10000

;int hash[maxn]

;int vis[3]

[4];

int tol;

int dir[4]

[2]=

,,,}

;void

dfs(

int cnt)}if

(!hash[tmp]

)return;}

for(

int i=

0;i<

3;i++)}

}}}}

intmain()

}printf

("%d\n"

,tol)

;return0;

}

這篇的想法比較溜:

藍橋杯 2016省賽 剪郵票

思路 一開始想到dfs套模板來用,可是發現像12346這種無法掃瞄到。從已經剪下來的任乙個點都可以開始dfs。這樣就不會漏掉情況 圖中的123456789101112數字沒有用處。在判斷重複的時候簡單的壓縮一下,2的13次方之內的即可儲存 include include using namespac...

2016 藍橋杯 省賽 剪郵票(dfs 判重)

剪郵票 如 圖1.jpg 有12張連在一起的12生肖的郵票。現在你要從中剪下5張來,要求必須是連著的。僅僅連線乙個角不算相連 比如,圖2.jpg 圖3.jpg 中,粉紅色所示部分就是合格的剪取。請你計算,一共有多少種不同的剪取方法。請填寫表示方案數目的整數。注意 你提交的應該是乙個整數,不要填寫任何...

2016 藍橋杯 剪郵票 dfs

這是2016年藍橋杯c語言省賽b組的第七題 題目 如下圖,有12張連在一起的12生肖的郵票。現在你要從中剪下5張來,要求必須是連著的。僅僅連線乙個角不算相連 比如,下面兩張圖中,粉紅色所示部分就是合格的剪取。請你計算,一共有多少種不同的剪取方法。輸出 請填寫表示方案數目的整數。oj鏈結 思路 通過對...