新年趣事之打牌

2021-05-28 14:34:50 字數 2116 閱讀 3300

新年趣事之打牌

【問題描述】

過年的時候,大人們最喜歡的活動,就是打牌了。xiaomengxian不會打牌,只好坐在一邊看著。

這天,正當一群人打牌打得起勁的時候,突然有人喊道:「這副牌少了幾張!」眾人一數,果然是少了。於是這副牌的主人得意地說:「這是一幅特製的牌,我知道整副牌每一張的重量。只要我們稱一下剩下的牌的總重量,就能知道少了哪些牌了。」大家都覺得這個辦法不錯,於是稱出剩下的牌的總重量,開始計算少了哪些牌。由於資料量比較大,過了不久,大家都算得頭暈了。

這時,xiaomengxian大聲說:「你們看我的吧!」於是他拿出膝上型電腦,編出了乙個程式,很快就把缺少的牌找了出來。

如果是你遇到了這樣的情況呢?你能辦到同樣的事情嗎?

【輸入檔案】

第一行乙個整數totalw,表示剩下的牌的總重量。

第二行乙個整數n(1

【輸出檔案】

如果無解,則輸出「0」;如果有多解,則輸出「-1」;否則,按照公升序輸出丟失的牌的編號,相鄰兩個數之間用乙個空格隔開。

【輸入樣例】

2704

100110

170200

【輸出樣例】

2 4********************==

*************************=

var totalw:longint;

n:longint;

w:array[1..1000]of longint;

f:array[0..100000]of longint;

g,g1:array[0..100000]of longint;

ans:array[1..1000]of boolean;

procedure init;

begin

assign(input,'bag.in');

assign(output,'bag.out');

reset(input); rewrite(output);

end;

procedure terminate;

begin

close(input); close(output);

halt;

end;

procedure print(t:longint);

begin

if g[t]<>0 then print(g[t]);

ans[g1[t]]:=false;

end;

procedure main;

var i,j:longint;

begin

readln(totalw);

readln(n);

for i:=1 to n do read(w[i]);

fillchar(g,sizeof(g),$ff);

fillchar(f,sizeof(f),0);

f[0]:=1;

for i:=1 to n do

for j:=totalw downto w[i] do

if f[j-w[i]]<>0 then

begin

f[j]:=f[j]+f[j-w[i]];

if f[j]=1 then

begin

g1[j]:=i;

g[j]:=j-w[i];

end;

end;

if f[totalw]=0 then

begin

writeln(0);

terminate;

endelse

begin

if f[totalw]>1 then

begin

writeln(-1);

endelse

begin

fillchar(ans,sizeof(ans),true);

print(totalw);

for i:=1 to n do

if ans[i] then write(i,' ');

endend;

end;

begin

init;

main;

terminate;

end.

新年趣事之打牌

問題描述 過年的時候,大人們最喜歡的活動,就是打牌了。xiaomengxian不會打牌,只好坐在一邊看著。這天,正當一群人打牌打得起勁的時候,突然有人喊道 這副牌少了幾張!眾人一數,果然是少了。於是這副牌的主人得意地說 這是一幅特製的牌,我知道整副牌每一張的重量。只要我們稱一下剩下的牌的總重量,就能...

新年趣事之打牌 DP

新年趣事之打牌 輸入檔案 bagb.in 輸出檔案 bagb.out 簡單對比 時間限制 1 s 記憶體限制 128 mb 題目描述 過年的時候,大人們最喜歡的活動,就是打牌了。xiaomengxian不會打牌,只好坐在一邊看著。這天,正當一群人打牌打得起勁的時候,突然有人喊道 這副牌少了幾張!眾人...

動態規劃 新年趣事之打牌

問題 問題描述 過年的時候,大人們最喜歡的活動,就是打牌了。xiaomengxian不會打牌,只好坐在一邊看著。這天,正當一群人打牌打得起勁的時候,突然有人喊道 這副牌少了幾張!眾人一數,果然是少了。於是這副牌的主人得意地說 這是一幅特製的牌,我知道整副牌每一張的重量。只要我們稱一下剩下的牌的總重量...