纪念品分组pascal程序
生活随笔
收集整理的這篇文章主要介紹了
纪念品分组pascal程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
從大到小排序,如果a[i]+a[j]沒超過限制,就可以加tj,否則i就指向下一個。
- var w,n,i,j,tj:longint; a:array[0..30000]of longint; procedure kp(l,r:longint); var i,j,mid:longint; beginif l>=r then exit;i:=l;j:=r;mid:=a[(l+r)div 2];repeatwhile a[i]>mid do inc(i);while a[j]<mid do dec(j);if i<=j thenbegina[0]:=a[i];a[i]:=a[j];a[j]:=a[0];inc(i);dec(j);end;until(i>j);kp(l,j);kp(i,r); end; beginreadln(w);readln(n);for i:=1 to n doreadln(a[i]);kp(1,n);//快排,從大到小i:=1;j:=n;tj:=0;//repeatif (a[i]+a[j])<=w then//前面加后面的結果小于等于wbegininc(tj);//分組加一inc(i);//指向下一個dec(j);//指向前一個end elsebegininc(tj);//不是也分組加一inc(i);//i指向下一個end;until(i>j);write(tj); end.
轉載于:https://www.cnblogs.com/YYC-0304/p/9500252.html
總結
以上是生活随笔為你收集整理的纪念品分组pascal程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拼数pascal程序
- 下一篇: 美元汇率pascal程序