滴滴笔试,第二题求助,哪位同学帮我分析分析,谢谢。
题目:有n张桌子,m批人,每张桌子的最大人数为h,每批人的人数为i,消费为j
每天桌子坐的人数不能大于h,求怎么样消费最高。
大义是这样。做过的小伙伴应该记得吧,然而我做出来尽然出现 数组溢出和野指针异常 希望大神帮帮忙。帮我分析分析。
import java.util.Arrays;
import java.util.Scanner;每天桌子坐的人数不能大于h,求怎么样消费最高。
大义是这样。做过的小伙伴应该记得吧,然而我做出来尽然出现 数组溢出和野指针异常 希望大神帮帮忙。帮我分析分析。
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){
int n = cin.nextInt();
int m = cin.nextInt();
int zhuozi[] = new int[n];
for(int i=0;i<n;i++){
zhuozi[i] = cin.nextInt();
}
int ren[][] = new int[m][2];
for(int i=0;i<m;i++){
ren[i][0] = cin.nextInt();
ren[i][1] = cin.nextInt();
}
Arrays.sort(zhuozi); //排序
int bucket[] = new int[m];
int sum = 0;
for(int i=0;i<zhuozi.length;i++){
int cur = zhuozi[i];
int max = -1;
for(int j=0;j<m;j++){
if(ren[j][0]<=cur&&bucket[j]==0){
if(max<ren[j][1]){
max = j;
}
}
}
sum +=ren[max][1]; //找到出钱最多的批次
bucket[max] = 1;//标记
}
System.out.println(sum);
}
}
}#Java工程师#