c语言求解排队接水问题

img


c语言求解有n个人一起排队接水,第i个人需用b[i]时间接水,同时只能有一个人接水,正在接水的人和没有接水的人需要等待,完成接水的人不会继续等待,决定所有人的排队顺序,求最小的所有人等待时间的总和

你先分享一下你的思路吧? 用自然语言描述就好。


#include<iostream>
using namespace std;
int main()
{
    int a[1000]={0};
    int i,k,m,n,min=0,j;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    k=n;
    for(j=0;j<n-2;j++)
      for(i=0;i<k-1;i++)
      {
          if(a[i]>a[i+1])
          {
              m=a[i];
              a[i]=a[i+1];
              a[i+1]=m;
              k--;
          }
              
      }
      for(i=0;i<n;i++)
      {
          min=min+(n-i)*a[i];
      }
      cout<<min<<endl;
}