C++题目描述在一个小村子里生活着n户人家。由于村里只有一口井所以他们每天早上一户人家派一个人在这一口井前排队打水。由于每家的水桶大小不同所以每个人的打水时间也不同。假如每个人打水的时间为Ti请你编程找出这n个人排队的一种顺序使得n个人的平均等待时间最小。输入描述共两行第一行为n;第二行分别表示第 1 个人到第n个人每人的打水时间Ti每个数据之间有 1 个空格。输出描述共两行第一行为一种排队顺序即
解题思路: 首先将每个人的打水时间和对应的编号保存为一个pair,然后按照打水时间从小到大进行排序。排序后,得到的序列就是一种排队顺序。根据题目中的描述,每个人的平均等待时间等于前面所有人的打水时间之和,因此可以通过累加前面所有人的打水时间来计算平均等待时间。
具体实现步骤如下: 1.读取输入的n和每个人的打水时间,保存为一个pair的vector。 2.对pair的vector按照打水时间从小到大进行排序。 3.计算平均等待时间,累加前面所有人的打水时间,并将结果保存为一个double类型的变量。 4.输出排序后的序列和平均等待时间,保留两位小数。
原文地址: http://www.cveoy.top/t/topic/h8P8 著作权归作者所有。请勿转载和采集!