c语言过桥

来源:百度知道 编辑:UC知道 时间:2024/05/16 08:43:08
#include<stdio.h>
int main()
{
int n,i,a[10000],t=0,j,k;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(a[j]>a[j+1])
{
k=a[j+1];
a[j+1]=a[j];
a[j]=k;
}
}
}
if(n>=1&&n<=3)
{
for(i=1;i<=n;i++)
{
t=t+a[i];
}
printf("%d\n",t);
}
else
{
if((2*n-3)%4==1)
{
for(i=0;i<=(2*n-4)/4;i=i+2)
{
t+=a[n-i];
}
t+=((2*n-3)/4)*(2*a[2]+a[1])+a[2];
printf("%d\n",t);
}
else if((2*n-3)%4==3)
{
for(i=0;i<=(2*n-4)/4;i=i+2)
{
t+=a[n-i];
}

void main()
{
int n,i,a[10000],t=0,j,k;
scanf("%d",&n);
/*应该判断n和10000的关系,如果n大于等于10000,那么就有数组溢出的情况*/
/*当然还要判断scanf的返回值以确认输入的是不是整数*/
for(i=1;i<=n;i++) /*数组a为什么从a[1]开始存放数据?a[0]留作什么用?,默认方式数组a[i]应该从0位开始*/
{
scanf("%d",&a[i]);
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(a[j]>a[j+1])
{
k=a[j+1];
a[j+1]=a[j];
a[j]=k;
}
}
}
if(n>=1&&n<=3)
{
for(i=1;i<=n;i++)
{
t=t+a[i];
}
printf("%d\n",t);
}
else
{
if((2*n-3)%4==1)
{
for(i=0;i<=(2*n-4)/4;i=i+2)
{
t+=a[n-i];
}
t+=((2*n-3)/4)*(2*a[2]+a[1])+a[2];
printf("%d\n",t);
}
else if((2*n-3)%4==3)
{
for(i=0;i<=(2*n-4)/4;i=i+2)
{