⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.pas

📁 www.vijos.cn上一些习题的参考源码
💻 PAS
字号:
program siweia; var a,ans:array[1..10]of longint;    b:array[0..10000]of boolean;    s:array[0..10000]of longint;
   max,i,j,n,m:longint; procedure dfs(num,first,sum:longint);   var i,j,k,maxs,sss,last:longint;   begin     if
num=m+1 then if max<sum then begin max:=sum;ans:=a;end;     fillchar(b,sizeof(b),0); fillchar(s,sizeof(s),0);    
b[0]:=true; maxs:=0; sss:=0; s[0]:=0;     for i:=1 to num-1 do     begin       for j:=maxs downto 0 do
      if b[j] then         begin         for k:=1 to n-s[j] do           begin
          b[j+a[i]*k]:=true;          if (s[j+a[i]*k]=0) or (s[j]+k<s[j+a[i]*k]) then
s[j+a[i]*k]:=s[j]+k;           end;         if j+a[i]*k>sss then sss:=j+a[i]*k;         end;
maxs:=sss;     end;     for last:=1 to maxs do if not b[last] then break;     if last<>maxs then last:=last-1;
    if s[last]<n then inc(last);     if num=m+1 then     begin if last>=max then begin max:=last;ans:=a;end;
exit;end;     for i:=first+1 to last+1 do     begin a[num]:=i;dfs(num+1,i,last-1);end;   end; begin  
readln(n,m);   a[1]:=1;     dfs(2,1,n);   for i:=1 to m do write(ans[i],' ');writeln;   writeln('MAX=',max); end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -