原来如此啊,现在终于算出来了
当n为偶数时,总时间为
for(i=n-1;i>1;i=i-2)
s=s+a[i];
s=s+(n/2-1)*a[0]+a[1]*(n-1);
当n为奇数时,总时间为
for(i=n-1;i>1;i=i-2)
s=s+a[i];
s=s+a[0]*n/2+a[1]*(n/2+1);
当n为偶数时,总时间为
for(i=n-1;i>1;i=i-2)
s=s+a[i];
s=s+(n/2-1)*a[0]+a[1]*(n-1);
当n为奇数时,总时间为
for(i=n-1;i>1;i=i-2)
s=s+a[i];
s=s+a[0]*n/2+a[1]*(n/2+1);
程序代码:
#include<stdio.h> int main() { int n,a[100]={0},i,s,j,t; printf("请输入过桥人数n:"); scanf("%d",&n); if(n!=0) { s=0; printf("请分别输入n个人的过桥所需时间:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) { for(j=1+i;j<n;j++) if(a[j]<a[i]) { t=a[i]; a[i]=a[j]; a[j]=t; } } if(n%2==0) { for(i=n-1;i>1;i=i-2) s=s+a[i]; s=s+(n/2-1)*a[0]+a[1]*(n-1); } else { for(i=n-1;i>1;i=i-2) s=s+a[i]; s=s+a[0]*n/2+a[1]*(n/2+1); } printf("共需用时%d分钟。\n",s); } else printf("输入错误。\n"); }