网易笔试
全部评论
做算法题太专心了,忘记还有一个开放题了
。佬,请问开放题是什么?
public static void solution3(){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
in.nextLine();
int[][] mess = new int[m][3];
for(int i=0;i<m;i++){
mess[i][0] = in.nextInt();
mess[i][1] = in.nextInt();
mess[i][2] = in.nextInt();
}
long[] dp =new long[n+1];
for(int i = 0;i<m;i++){
int start = mess[i][0];
int end =mess[i][1];
int bonus = mess[i][2];
for(int j = n;j>=end;j--){
dp[j] = Math.max(dp[j],dp[start]+(end-start+bonus));
}
}
System.out.println(dp[n]);
}有没有佬能帮忙看看第三题为啥错呀,用例过了但是通过率0
多少能进面昂
我的代码,有佬告诉我哪错了吗
static long max=0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num= sc.nextInt();
int packages = sc.nextInt();
ArrayList<int[]> list = new ArrayList<>();
for (int i = 0; i < packages; i++) {
int i1 = sc.nextInt();
int i2 = sc.nextInt();
int bonus = sc.nextInt();
list.add(new int[]{i1,i2,bonus});
}
dfs(list,0,0,0);
System.out.println(max);
}
public static void dfs(List<int[]> points, int end, int n, int sum){
if(max<sum){
max=sum;
}
if(n==points.size()){
return;
}
int[] nums = points.get(n);
if(nums[0]>=end) {
int tmp = nums[1] - nums[0] + nums[2];
sum += tmp;
dfs(points, nums[1],n + 1, sum);
sum -= tmp;
}
dfs(points,end,n+1,sum);
}
你dfs是根据边进行的吗?边不一定连续。比如从1-2,在6-7这样


有没有检查边界情况
相关推荐


点赞 评论 收藏
分享
03-15 12:12
重庆邮电大学 前端工程师 点赞 评论 收藏
分享
03-15 12:39
ABC Barber College (Hot Springs) Java 

点赞 评论 收藏
分享
03-15 11:59
北京邮电大学 C++ 

点赞 评论 收藏
分享