11,501
社区成员
发帖
与我相关
我的任务
分享
每位同学都有自己的一个幸运数,乐乐所在班级共有n位同学,因此有编号为1至n的n块标牌,标牌的编号与自己的幸运数相乘,就是这位同学的分数。你的工作就是帮乐乐寻找一种方案,使得班级总分数最大。
输入
第一行只有一个整数n
第二行共有n个不超过10000的正整数,中间有一个空格隔开。
输出
只有一行且只有一个整数,乐乐班级的总分数。
以下程序实现了这一功能,请你填补空白处内容:
#include<stdio.h>
int main()
{
int a[10005];
long long t=0;
int n,i,j,x;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
_____________;
}
}
for(i=0;i<n;i++)
{
t+=a[i]*(i+1);
}
printf("%lld",t);
return 0;
}
有些懵逼, 答案是
if(a[i]>a[j]){
x=a[i];
a[i]=a[j];
a[j]=x;
}
但这不是从小到大排序吗? 为了防止是我演算出错,特意将代码复制下来运行了一遍
这不是将
我觉得是这样
for(int i = 0 ; i < n - 1; i++)
{
for(int j = 0 ; j < n - i - 1; j++)
{
if(a[j] > a[j+1])
{
x = a[j];
a[j] = a[j+1];
a[j+1] = x;
}
}
}
if(a[i]<a[j]){
x=a[i];
a[i]=a[j];
a[j]=x;
}