藍橋杯16年B組真題 剪郵票

2021-09-12 12:53:19 字數 1218 閱讀 7616

【問題描述】

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

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

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

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

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

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

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

【問題分析】

剛拿到題目時,第乙個感覺就是用dfs,從某乙個點出發,利用dfs計算從該點出發走滿五個格仔的情況數,再將所以情況相加即可得到結果。但是!!!!!!如果dfs的話,無法同時向下或者向右走,也就是每次只能向乙個方向走。

我們換乙個思路吧!!!就是先在12個格仔中選五個,再去判斷這五個是否連通。因為資料規模比較小,所以這是完完全全可行的!!!!

現在我們就來分別解決這些問題

問題一:12個中選五個,用0表示不選,1表示選擇,對7個0和5個1的所有組合情況,那麼每一種組合情況,就能代表在圖中選擇的郵票情況。可以自己寫組合的函式,也可以直接呼叫next_permutation(),後者當然更加方便,本文中也是直接呼叫next——permutation()來實現12個選5的操作的

問題二:判斷選中的5張郵票是否連通。用dfs來判斷是否只有乙個連通分量。dfs比較迷,我自己也講不明白,你們自己慢慢體會。

#include #include using namespace std;

void dfs(int g[3][4],int i,int j)

int main();

int ans=0;

doelse

}} //g中有五個格仔被標記為1,現在用dfs做連通性檢查

int cnt=0;

for(int i=0;i<3;i++) }}

if(cnt==1)

}while(next_permutation(a,a+12));

cout<

}

藍橋杯真題 剪郵票 題解

題目 如 圖1.jpg 有12張連在一起的12生肖的郵票。現在你要從中剪下5張來,要求必須是連著的。僅僅連線乙個角不算相連 比如,圖2.jpg 圖3.jpg 中,粉紅色所示部分就是合格的剪取。正確答案在下面!錯誤答案大神們請無視 wrong answer 錯因 這道題是不能邊用dfs邊判斷,比如圖3...

2016 年藍橋杯C A組 賽題 dfs 剪郵票

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

藍橋杯 16年藍橋杯B組,湊算式

題目描述 b def a 10 c ghi 這個算式中a i代表1 9的數字,不同的字母代表不同的數字。比如 6 8 3 952 714 就是一種解法,5 3 1 972 486 是另一種解法。這個算式一共有多少種解法?注意 你提交應該是個整數,不要填寫任何多餘的內容或說明性文字。分析 看到這個題目...