第一题燃烧卡路里,贴一个AC的代码,个人觉得9%是因为考虑的不够完整 import java.util.Scanner; import java.util.Arrays; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); int a=input.nextInt(); int b=input.nextInt(); int[] c =new int[a]; for(int i=0;i<a;i++){ c[i]=input.nextInt(); } Arrays.sort(c); int sum=0; int result=0; int count=0; // 大致思路就是排完序后,看加和与给定值的关系 for(int i=0;i<a;i++){ sum=sum+c[i]; if(sum>b){ // 若大于给定值,此数不计入总数,结束循环 result=count; break; }else if(sum==b){ //若等于给定值,此数计于总数,结束循环 result=count+1; break; }else{ // 若小于该值,此数计于总数,接着循环 count++; if(i==a-1){ //直到该数走到最后一个数时,还小于给定值时,说明给定值太大了,所有数加起来都加不到该值 result=a; // 此时输出数组所含数的总个数 break; } } } System.out.print(result); } }