【問題描述】
剪郵票如【圖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 是另一種解法。這個算式一共有多少種解法?注意 你提交應該是個整數,不要填寫任何多餘的內容或說明性文字。分析 看到這個題目...