帮忙编程!!!谢谢啦!打水问题

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:05:25
有n个人各拿一个桶同时到水龙前打水,水龙头注满第i个人的桶所需时间为Ti分钟(它们各不相同)。编程序,对这n个人排队,使他们花费时间的总和最小,并求出时间。
比方有3个人,他们的桶注满时间分别是3,1,4分钟。那排列之后应该是1,3,4,因为1+(1+3)+(1+3+4)最小。

以下是在C++中实现
#include"iostream.h"
int main()
{
int n;
cout<<"请输入人的个数"<<endl;
cin>>n;
int *time=new int[n];//C++中申请动态数组的优势
printf("请输入每个人的时间"\n);
for(int i=0;i<n;i++)//C++中允许
cin>>time[i];
for(i=0;i<n;i++)
{
float tim,ti;
ti=time[i];
for(int j=1;j<n;j++)
if(ti>time[j])
{tim=time[i];time[i]=time[j];time[j]=tim;}
//这两个for实现变形冒泡排序,使小的总在最前。
}
for(i=0;i<n;i++)
cout<<时间排列顺序是<<time[i]<<endl;
delete [] time;//释放内存
return 0;
}

#define n 10
#include<iostream.h>
int main()
{
int a[n];
cout<<"输入每个人打水所需时间:\n";
for(int i=0;i<n;i++)
cin>>a[i];

int j;
int tmp;
for(i=1;i<n;i++)
{
tmp=a[i];
j=i-1;
while(j>=0 && tmp<a[j])
{
a[j+1]=a[j];