#include <stdio.h>
int main()
{
int n, m;
int a[1000];
scanf("%d %d", &n, &m);
int i;
int p=0;
long long x = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for (i = 1; i < n; i++)
{
if (a[i-1] < a[i ])
{
p = a[i ];
a[i ] = a[i-1];
a[i-1] = p;
}
}
if (n > m)
{
for (i = 0; i < m; i++)
{
x += a[i];
}
}
else
{
for (i = 0; i < n; i++)
{
x += a[i];
}
}
printf("%d", x);
return 0;
}
数据过大时可能int不够了,改成long long,你的输出也要改成对应的格式%lld
x是long long类型 ,输出得用lld
printf("%lld", x);
楼主知道为什么了吗 可以给我讲讲吗??? 感谢
排序那里出问题了,应该这样
for (i = 0; i < n-1; i++)
{
for(j=i+1;j<n;j++)
{
if (a[j] > a[i])
{
p = a[i];
a[i] = a[j];
a[j] = p;
}
}
}