设有已知面额的邮票m种,每种有n张.问:用总数不超过n张的邮票进行组合,能组合的邮票面额中可以连续出现面额数最多有多少?例:输入 n:4 m: 3 每种面额1 2 4 输出 14
请大家帮忙看看我的这个程序为什么是201号错误(范围检查错)。
- program post;
- var
- n,m,i,j,mt:integer;
- maxl:longint;
- a:array[1..100] of integer;
- money,max:array[1..255] of integer;
- procedure search(k,n,x:longint);
- var i:integer;
- begin
- if (n=0) or (k=0) then exit;
- for i:=n downto 0 do
- begin
- x:=x+a[k]*i;
- n:=n-i;
- money[x]:=money[x]+1;
- search(k-1,n,x);
- n:=n+i;
- x:=x-a[k]*i;
- end;
- end;
- begin
- read(n,m);
- for i:=1 to m do
- read(a[i]);
- search(m,n,0);
- mt:=1;
- for i:=1 to 255 do
- if money[i]<>0 then max[mt]:=max[mt]+1 else mt:=mt+1;
- maxl:=max[1];
- for i:=1 to mt do
- if max[i]>maxl then maxl:=max[i];
- writeln(maxl);
- end.
[ 此贴被superjty在2009-06-26 18:25重新编辑 ]