切换到宽版
  • 4338阅读
  • 1回复

分享图论算法源程序集合 [复制链接]

上一主题 下一主题
离线superjty
 
只看楼主 倒序阅读 0 发表于: 2009-06-24
设有已知面额的邮票m种,每种有n张.问:用总数不超过n张的邮票进行组合,能组合的邮票面额中可以连续出现面额数最多有多少?例:输入 n:4 m: 3          每种面额1 2 4  输出 14

请大家帮忙看看我的这个程序为什么是201号错误(范围检查错)。
  1. program post;
  2.   var
  3.     n,m,i,j,mt:integer;
  4.     maxl:longint;
  5.     a:array[1..100] of integer;
  6.     money,max:array[1..255] of integer;
  7.   procedure search(k,n,x:longint);
  8.     var i:integer;
  9.     begin
  10.       if (n=0) or (k=0) then exit;
  11.       for i:=n downto 0 do
  12.         begin
  13.           x:=x+a[k]*i;
  14.           n:=n-i;
  15.           money[x]:=money[x]+1;
  16.           search(k-1,n,x);
  17.           n:=n+i;
  18.           x:=x-a[k]*i;
  19.         end;
  20.     end;
  21.   begin
  22.     read(n,m);
  23.     for i:=1 to m do
  24.       read(a[i]);
  25.     search(m,n,0);
  26.     mt:=1;
  27.     for i:=1 to 255 do
  28.       if money[i]<>0 then max[mt]:=max[mt]+1 else mt:=mt+1;
  29.     maxl:=max[1];
  30.     for i:=1 to mt do
  31.       if max[i]>maxl then maxl:=max[i];
  32.     writeln(maxl);
  33.   end.
[ 此贴被superjty在2009-06-26 18:25重新编辑 ]
离线superjty
只看该作者 1 发表于: 2009-06-25
没人回答啊
快速回复
限100 字节
 
上一个 下一个