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

📄 p1204.dpr

📁 高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程
💻 DPR
字号:
program p1204;

{$APPTYPE CONSOLE}

const
        max=1000000;

var
        i       :Integer;
        data    :array[0..31]of longint;
        sum     :array[0..max]of longint;
        pos     :array[0..max]of integer;
        l,t     :longint;
        puss    :array[1..max]of longint;
        part,p  :Integer;
        m       :integer;
        have    :boolean;

PROCEDURE sort;
var
        i,j     :Integer;
        temp    :longint;
begin
for I:=1 to m-1 do
        for j:=i+1 to m do
        if data[i]>data[j] then
                begin
                temp:=data[i];
                data[i]:=data[j];
                data[j]:=temp;
                end;
end;

PROCEDURE output(w:longint);
begin
if puss[w]=0 then write(data[pos[w]]) else
        begin
        output(puss[w]);
        write('+',data[pos[w]]);
        end;
end;

PROCEDURE print;
begin
output(t);
writeln('=',sum[t]);
have:=true;
end;

FUNCTION check(p:longint):boolean;
var
        i       :integer;
begin
for I:=m downto 1 do
        if data[i]=p then
                begin
                check:=true;
                exit;
                end;
check:=false;
end;

PROCEDURE main;
var
        i       :integer;
begin
repeat
for i:=pos[l]+1 to m do
        begin
        inc(t);
        pos[t]:=i;
        puss[t]:=l;
        sum[t]:=sum[l]+data[i];
        if check(sum[t]) then print;
        if sum[t]>data[m] then dec(t);
        end;
inc(l);
until l>t;
end;

begin
readln(part);
for p:=1 to part do
        begin

        read(m);
        for I:=1 to m do read(data[i]);
        readln;
        //readin

        sort;
        have:=false;
        for i:=1 to m do begin puss[i]:=0; pos[i]:=i; sum[i]:=data[i] end;
        l:=1;t:=m;
        //first


        main;



        if not have then writeln('Can','''','t find any equations.');
        writeln;
        end;


end.

⌨️ 快捷键说明

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