pascal程序题:一元,二元,五元,十元,人民币个一张,一共可以组成多少中币值?

来源:百度知道 编辑:UC知道 时间:2024/07/04 19:27:45
帮忙!!发一下程序!!!free pascal!

背包……
var
f:array[0..100] of boolean;
x,n,v,i,j,ans:longint;
begin
readln(N);f[0]:=true;
for i:=1 to n do
begin
read(x);inc(v,x);
for j:=v downto x do
f[j]:=f[j] or f[j-x];
end;
for i:=1 to 100 do
if f[i] then
inc(ans);
writeln(ans);
end.
现敲的,没编译,有错别怪我

这个,。。。。
首先,组合的币值范围是1-18,
你先开一个p[18]:boolean;先赋值为false;然后组合,如1+5=6;
就把p[6]:=true;
最后扫一下p;看有几个为真。。。。就有几种

至于如何组合;
用二进制
从(0001)-(1111)
即从十进制的1-15;

然后
1 2 5 10
----------------------
0 0 0 1 的意思是,1,2,5不取,10取1张;
0 1 0 1 的意思是 取一张2 和10;
。。。。。。。。。。。。。。。。。。

思路就是这样的;
手头没有fp;

你先写吧,;
实在不会就留言、、、

好吧。。。
我有时间帮你敲了一下代码
program cs;
type bin=array[1..4] of boolean;
var
i,j:longint;
sum:longint;
ans:longint;
p:array[1..18] of boo