假設某國家發行了n種不同面值的郵票,並且規定每張信封上最多隻允許貼m張郵票。
連續郵箱問題要求對於給定的n和m,給出郵票面值的最佳設計,在1張信封上貼出從郵資1開始,增量為1的最大連續郵資區間。
例如當n=5,m=4時,面值為1,3,11,15,32的5種郵票可以貼出郵資的最大連續區間是1到70。
#include
int a[6]=; //存放郵資面值
int b[500]=; //存放每一種情況的面值,存在此面值則設為1,否則為0
intcount=0; //存放每一種情況面值的值
void backtrack(int t) //傳值:取的郵票數目
}}int main()
printf("%d\n",i-1);
return0;}
/*思路:
因為要取得的郵票數目不固定,所以需要新增乙個面值為0的郵票,然後迴圈回溯,取得每一種情況。
在主函式中遍歷每一種郵資面值情況陣列(b陣列),判斷連續最大區間。
回溯截止條件:取的郵票的數目為4。
*/
連續郵資問題
王曉東老師編著的 計算機演算法設計與分析 5.12 節以 連續郵資問題 為例展示了回溯法的應用。講解比較簡略,對於搜尋出一張新的郵票面值後如何更新最大連續郵資區間這一點沒有過多的說明。以下是自己對於這一節學習的一點筆記。實際上,關於剛才所說的更新最大連續郵資區間的方法,可以歸結到一種 等價類 的思想...
連續郵資問題
連續郵資問題 演算法設計 該問題是設計最佳的郵票面值,用來表示最大的區間 對於連續郵姿問題,用n元組x 1 n 表示n種不同的郵票面值並約定它們從小到大排列。整數r表示當前使用不超過m張郵票能貼出的最大連續郵資區間。x 1 1是唯一的選擇。此時最大連續郵資區間是 1 m 接下來x 2 的可能取值範圍...
連續郵資問題
假設國家發行了n種不同面值的郵票,並且 規定每張信封上最多隻允許貼m張郵票。連 續郵資問題要求對於給定的n和m的值,給出 郵票面值的最佳設計,在1張信封上可貼出 從郵資1開始,增量為1的最大連續郵資區 間。noip99 例如,當n 2 m 3時,如果面值分別為1 4,則在l 6之間的每乙個郵資值都能...