第三个点怎么回事?

var
n,m,i,j,k,num:longint;
f:array[0..100000]of longint;
w,a:array[1..100]of longint;
begin
readln(m); readln(n); f[0]:=1;
for i:=1 to n do readln(w[i]);
for i:=1 to n do
for j:=m downto w[i] do
f[j]:=f[j]+f[j-w[i]];
if f[m]=0 then writeln(0) else
if f[m]>1 then writeln(-1) else
begin
while m<>0 do
begin
i:=1;
while (f[m-w[i]])<>1 do inc(i);
a[i]:=1; m:=m-w[i];
end;
for i:=1 to n do if a[i]=0 then write(i,' ');
writeln;
end;
end.

0 条评论

目前还没有评论...

信息

ID
1071
难度
7
分类
动态规划 | 背包 点击显示
标签
递交数
6302
已通过
1439
通过率
23%
被复制
13
上传者