第一遍做的时候,只想到排序后的一个循环体,结果答案错误,没有思考到位。
现实模拟
- 把物品按从大到小排序,把它装进箱子里
- 遍历每一个盒子作为开始起点
- 若下一个盒子装不下,继续找比它小的盒子装箱,直到找不到为止,或者直到箱子被盒子们装满
- 找到最小容量
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);
}
}