英雄杀搞基组合是什么:用PASCAL编程

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/27 06:59:20
GDOI工作组遇到了一个运输货物的问题。现在有N辆车要按顺序通过一个单向的小桥,由于小桥太窄,不能有两辆车并排通过,所以在桥上不能超车。另外,由于小桥建造的时间已经很久,所以小桥只能承受有限的重量,记为Max(吨)。所以,车辆在过桥的时候必须要有管理员控制,将这N辆车按初始顺序分组,每次让一个组过桥,并且只有在一个组中所有的车辆全部过桥以后才让下一组车辆上桥。现在,每辆车的重量和最在速度是已知的,而每组车的过桥时间由该组中速度最慢的那辆车决定。
现在请你编一个程序,将这N辆车分组,使得全部车辆通过小桥的时间最短。
第一行两个数m,k:表示书本数目与人数;第二行m个由空格分隔的整数,m本书每本的页数.

〖输入格式〗
第一行两个数m,k:表示书本数目与人数;第二行m个由空格分隔的整数,m本书每本的页数.

〖输出格式〗
共k行。每行两个整数:第I行表示第I抄写员抄的书本编号起止。
〖输入输出样例〗

输入样例 输出样例
9 31 2 3 4 5 6 7 8 9 1 56 7 8 9

1、冒泡法
program lxi05(input,output);
var a:array[1..5] of real;
i,j,n:integer; t:real;
begin
n:=12;
for i:=1 to n do readln(a[i]);
for i:=1 to n-1 do
for j:=1 to n-i do
if a[j]>a[j+1] then
begin
t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t;
end;
for i:=1 to n do WRITE(a[i],‘,’);
end.
2、选择法
program lxi05(input,output);
var a:array[1..10] of real;
i,j,n,p:integer; t:real;
begin
n:=10;
for i:=1 to n do readln(a[i]);
for i:=1 to n-1 do
begin
p:=i;
for j:=i+1 to n do
if a[j]<a[p] then p:=j;
t:=a[p];
a[p]:=a[i];
a[i]:=t;
end;
for i:=1 to n do WRITE(a[i],‘,’);
end.