- C++
贪心算法
- 2024-3-9 16:46:17 @
排队打水
#include<bits/stdc++.h>
using namespace std;
int main(){
//1、理解和分析题意
// 找出已知信息
// 已知:排队打水的人数、排队打水的每个人需要的打水时间
// 未知:最优的排队打水顺序--》打水用时最少得排前面
// 未知:平均等待时间--》每个人等待的时间和除以人数
// 中间未知数:打水时间的排序,打水编号排序,每个人等待的时间和
// 2、定义变量
int n,num[1010],t[1010],ag,time_sum=0;//人数,序号,时间
// 3、输入已知
cin>>n;
for(int i=1;i<=n;i++){
cin>>t[i];
num[i]=i;
}
// 4、分步骤运算得出未知(答案)
// 4.1 排序
for(int i=1;i<=n-1;i++)
for(int j=1;j<=n-i;j++)
if(t[j]>t[j+1]){
swap(t[j],t[j+1]);
swap(num[j],num[j+1]);
}
// 4.2 每个人等待的时间和
for(int i=1;i<=n;i++)time_sum+=t[i]*(n-i);
// 5.按题目要求输出答案
// 5.1 最优的排队打水顺序
for(int i=1;i<=n;i++)cout<<num[i]<<" ";
cout<<endl;
// 5.2 平均等待时间--》每个人等待的时间和除以人数
printf("%.2f",time_sum*1.0/n);
return 0;
}
0 条评论
目前还没有评论...