第一遍做的时候,只想到排序后的一个循环体,结果答案错误,没有思考到位。

现实模拟

  • 把物品按从大到小排序,把它装进箱子里
  • 遍历每一个盒子作为开始起点
  • 若下一个盒子装不下,继续找比它小的盒子装箱,直到找不到为止,或者直到箱子被盒子们装满
  • 找到最小容量
import java.util.*;
public class Main{
    public static void main(String arg[]){
        Scanner sc=new Scanner(System.in);
        int v=sc.nextInt(),n=sc.nextInt(),ans=v;
        int[] tiji=new int[n];
        for(int i=0;i<n;i++){
            tiji[i]=sc.nextInt();
        }
        Arrays.sort(tiji);
        for(int i=n-1;i>=0;i--){
            int sum=v;
            for(int j=i;j>=0;j--){
                if(sum-tiji[j]>=0){
                    sum-=tiji[j];
                    if(sum==0) break;
                }
            }
            if(ans>sum) ans=sum;
        }
        System.out.print(ans);
    }
}