永发信息网

【合并果子】一道水题啊,pascal大神进

答案:2  悬赏:10  手机版
解决时间 2021-04-04 05:57
  • 提问者网友:疯子也有疯子的情调
  • 2021-04-04 03:04
【合并果子】一道水题啊,pascal大神进
最佳答案
  • 五星知识达人网友:枭雄戏美人
  • 2021-04-04 04:14
for i:=(n-2) downto 1 do
begin
if fru[i]>two then {如果合并后的果子数小于每一堆的果子数,则把它们放在最末尾}
begin
fru[i+1]:=two;
break;
end
else
begin {把合并后的果子插入有序序列}
fru[i+1]:=fru[i];
if two>fru[i] then
fru[i]:=two;
break;
end;
end;
dec(n);
这里有问题,你这样下来,循环有跟没有没区别,这里应该是确定到水果自己的位置再放下来。
全部回答
  • 1楼网友:蓝房子
  • 2021-04-04 05:01
program fruit;//tyvjP1066
const
maxn=10000;
var
a:array[1..maxn+1] of longint;
i,j,k,n,m,temp,t,s:longint;
procedure qsort(s,t:longint);
var
i,j,x:longint;
begin
i:=s;j:=t;
x:=a[(i+j) div 2];
repeat
while a[i] while a[j]>x do dec(j);
if i<=j then
begin
temp:=a[i];a[i]:=a[j];a[j]:=temp;
inc(i);
dec(j);
end;
until i>j;
if s if iend;
begin
//assign(input,'fruit.in');reset(input);
//assign(output,'fruit.out');rewrite(output);
readln(n);
for i:=1 to n do read(a[i]);
qsort(1,n);
for i:=1 to n-1 do begin
t:=a[1]+a[2];
s:=s+t;
j:=3;
while (t>a[j]) and (j<=n) do j:=j+1;
j:=j-1; n:=n-1;
for k:=1 to j-2 do a[k]:=a[k+2];
a[j-1]:=t;
for k:=j to n do a[k]:=a[k+1];
end;
writeln (s);
end.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯