3197 - A.小学生摘苹果
时间限制 : 1 秒
内存限制 : 128 MB
今天宿舍的小伙伴们一起散步,走着走着一个又大又香的苹果正中小学生的头顶,小学生非常气愤的向上看,发现一个苹果树,上面挂满了又大又红的苹果,小学生摸了摸自己呱呱叫的肚子。于是他找来了几颗石子想扔几颗苹果下来解馋,当然苹果的重量都不同,小学生希望利用有限的几颗石头,得到最大的重量总和
题目输入
输入包含多组测试数据
第一行为一个整数为n,表示小学生仅有的n颗石头
第二行为一个整数m,表示树上共有m个苹果
第三行为m个整数ai,用空格分开,表示m个苹果的重量
0=<n<=10,0<=m<=100,1=<ai<=100
题目输出
每组测试数据输出仅一行,表示能收集到的最大重量
输入/输出样例
输入格式
3 5 1 2 3 4 5 2 1 2
输出格式
12 2
C语言解答
#include <stdio.h> int n,m; int ai[100]; int count() { int c=0; int i,j,t,k; for(j=0;j<m;j++) for(i=0;i<m-1-j;i++) if(ai[i]<ai[i+1]) { t=ai[i]; ai[i]=ai[i+1]; ai[i+1]=t; } int cts; if(n>m) cts=m; else cts=n; for(k=0;k<cts;k++) { c=c+ai[k]; } return c; } int main() { int i; while (scanf("%d",&n) != EOF) { scanf("%d",&m); for (i=0;i<m;i++){ scanf("%d",&ai[i]); } printf("%d\n",count()); } return 0; }
C++解答
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; int main() { int n, k, a[101]; while(scanf("%d",&k) != EOF) { scanf("%d",&n); for(int i = 0 ; i < n ; i ++) { scanf("%d",&a[i]); } sort(a,a+n); int ans = 0; for(int i = n - 1 ; i >= 0 ; i --) { if(k == 0) break; ans += a[i]; k --; if(k == 0) break; } cout << ans << endl; } return 0; }