1樓:匿名使用者
什麼連續郵資 說清楚點
是這個題嗎?
我們寄信都要貼郵票,在郵局有一些小面值的郵票,通過這些小面值郵票中的一張或幾張的組合,可以滿足不同郵件的不同的郵資。
現在,郵局有4種不同面值的郵票。在每個信封上最多能貼5張郵票,面值可相同,可不同。
輸入:四種郵票的面值。
輸出:用這四種面值組成的郵資最大的從1開始的一個連續的區間。
說明:如結果為10,則表明使用4張郵票可組合出1、2、3、4、5、6、7、8、9、10這些郵資。
如果是 那不用回溯法
窮舉就行了
#include
main()
}else break; }}
printf("the max is %d.\n",max);}
2樓:一起玩
#include
using namespace std;
int aim,now=0,fm[105],n,big=0,m,hf[25505];
bool f[25505];
int main()
for(int i=2;i<=n;i++)for(int j=1;j<
int ans=0,max=0;
for(int i=1;i<=big*n;i++)printf("%d",max);
return 0;
}//寫法不規範
回溯 連續郵資問題 詳細解析 pascal
3樓:匿名使用者
你好,解釋一下做法
bool c[255*100] // c[j] 記錄 面值
綜合為j的方案存不存在
count[j] 是面值為j的郵票當前剩餘多少枚
核心處理方法:
procedure try (count[255]:integer;sum:integer;use:integer)//sum是當前的總和 use是用了的枚數
begin
if use>n then exit; //如果用的超出了限制數目 退出子程式 不再進行下去
c[sum]=true; //當前的組合總值是可以被組合的 , 所以把這格填寫true
for i:=1 to 255 do //窮舉所有面值
if count[i]>0 // 有可用的郵票
begin //進行嘗試
count[i]:=count[i]-1; // 因為使用了所以暫時-1
try(count[255],sum+i) //進行遞迴 , 總和加上了這次選擇的面值 i
count[i]:=count[i]+1; //還原面值可用數量
end;
end;
主程式一開始要做的是:
begin
read(m,n);
for i:=1 to m do
begin
read(tmp);count[tmp]:=n; //初始化
end;
try(count[255],0,n);//嘗試組合可能性
for i:=1 to 25500 //所有可能的組合 temp是目前連續的數目 if (c[i]=false) temp:=0
else begin
temp:=temp+1;
if temp>ans ans:=temp; //和答案比較 求最大值
end;
writeln(ans);
end.
不明白可以追問 :) 希望能採納 打了半天xd
c或c 結構體成員的呼叫的問題
什麼問題沒講明白,沒有人能知道給你解答 c的結構體與c 的結構體的區別 答 標準c中定義,c語言中的結構體內是不能宣告函式的 c 結構體中可以有函式的宣告,不過他們都是歷史遺留下來的產物 現在,應該避免使用結構體,因為結構體都可以由類來代替 你應該問類與結構的區別,類中如果不宣告成員的訪問控制屬性,...
求C語言問題的程式,求一個C語言問題的程式!
include stdio.h include string.h include ctype.h int invertion char ch1,char ch2,int n 原字串由形參傳給ch1,倒排後字串 目前是空串 傳給ch2,字串長度傳給n main 啊,看錯了,是單詞倒排不是整串倒排,你把...
求回答簡單的c語言問題,求回答簡單的C語言問題
對於第一個問題建議你好好看看逗號運算子以及其作用,實際上 c c,c 8,c 相當於 c c 當然 c是先自加1再結算值,也就是說c的值就是5 6,也就是11。所以a的最終值就是13了。第二個問題其實就是一個自加運算子的問題,注意x 是先取x的值,之後表示式結束後再減1。所以輸出就是10和9了。最後...