问题:
X学校最近组织了一场春游踏青活动,向Y公司租赁汽车运输学生。这次参加活动的总共有n个班级,
第i班总共有ai名学生,每辆车最大乘车人数为m,满足m>a1, a2, ..., an。乘车时必须按照班级排列顺序进行乘车,
不能调整班级顺序进行拼车。为保证同一个班级的学生在同一辆车上,如果当前汽车装完上一个班级后,下一个班级所有同学无法装下,
那么当前车开走使用下一辆车。问最少需要多少辆车才能把所有学生运完?
解决:
(1)问题核心是一个班的人不能被拆开,必须在同一辆车。
(2)乘车顺序必须按照班级顺序,所以班级上车顺序为输入有序。
code:
1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String args[]) { 5 Scanner s = new Scanner(System.in); 6 int n = s.nextInt(); //班级数 7 int m = s.nextInt(); //最大乘车数 8 int ar[] = new int[n]; 9 int count = 0; //记录车的数量 10 11 //输入班级 12 for(int i=0;i<n;i++) { 13 ar[i] = s.nextInt(); 14 } 15 int temp; //记录当前上车人数 16 for(int i=0;i<n;) { 17 count++; 18 temp = ar[i]; 19 int j; 20 for(j=i+1;j<n;j++) { 21 //为true时,表示多班级可以做同一辆车 22 if((temp+ar[j])<=m) { 23 temp+=ar[j]; 24 }else { 25 break; 26 } 27 } 28 //更新还未上车班级的起始位置 29 i = j; 30 } 31 System.out.println(count); 32 } 33 34 }