思路是首先把得到的數組進行排序,這裏使用插入法排序,然後用s存放最小的兩個數字之和(即爲費用Pa+Pb),在數組元素第二小的地址上存放最小兩數值和,最小一位清零,循環結束時s即爲最終費用。
#include"stdio.h"
int main(){
int n,i,t,tt,j,x=0,s=0;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",a+i);
}
for(t=0;t<n-1;t++){
for(i=1;i<n;i++){//給數組從小到大排序 (插入法)
tt=a[i];
for(j=i;tt<a[j-1];j--){
a[j]=a[j-1];
}
a[j]=tt;
}
s+=a[x]+a[x+1];//s爲最小兩位之和
a[x+1]+=a[x];//第二小的位置上存放最小兩數之和
a[x]=0;// 最小一位清零
x++;
}
printf("%d",s);
return 0;
}