360笔试

记错时间了,晚了半个小时,顺带一提,为什么java开发那么多道其他语言的题目,不知道是不是c++,我基本上是靠猜的

算法题1:

应该不难可能是逻辑有点小漏缺

只过了55%

代码如下,如有大佬发现代码漏缺,欢迎指正

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Main {
    static int mod= (int) (1e9+7);
    static long res=0;
    public static void main(String[] args) throws IOException {
        //直接dfs
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        int n = Integer.parseInt(s);
        s = br.readLine();
        dfs(s,0,0);
        System.out.println(res%mod);
    }
    //start end左闭右闭
    public static void dfs(String s,int start,int end){
        //边界条件:当遍历到s的边界时
        if(end>=s.length()-1){

                res+=1;

            return ;
        }
        //截断在此
        if(end-start>2){
            return;
        }
        String a=s.substring(start,end+1);
        int aa=Integer.parseInt(a);
        if(aa<=26) {
            dfs(s, end+1, end+1);
        } else{
            return ;
        }
        if (aa < 3) {
            //接着往下传
            dfs(s, start, end+1);
        }

    }
}

第二题(太痛了,静态变量没设置值,给我搞了半小时一直是0通过率,我还是刚刚才发现的)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;


public class Main1 {
    static int max=0;
    static int n;
    public static void main(String[] args) throws IOException {
        //同样dfs
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        String[] ss = s.split(" +");
       n = Integer.parseInt(ss[0]);
        int a = Integer.parseInt(ss[1]);
        int []num=new int[n+1];//前缀和
        s = br.readLine();
        ss = s.split(" +");
        for (int i = 0; i < ss.length; i++) {
            num[i+1]=Integer.parseInt(ss[i])+num[i];
        }


        dfs(num,a-1,1,new ArrayList<>());
        System.out.println(max);
    }
    
    public static void dfs(int[]nums, int count, int idx, List<Integer>cur){
        //todo:防止对应的dfs出现问题,尤其死递归,不分割那块
        if(count==0){
            //遍历cur,计算出当前的值
            int sum=0;
            int start=0;
            AtomicReference<String> ll= new AtomicReference<>("");
            cur.forEach(integer -> {
                ll.updateAndGet(v -> v + integer);
            });
            System.out.println("list:"+ll.get());
            for (Integer i : cur) {
                System.out.println("sum,add:"+(nums[i]-nums[start]));
                sum+=nums[i]-nums[start];
                start=i;
            }
            //加上最后一段
            Integer last = cur.get(cur.size() - 1);
            System.out.println("n:"+n+"last:"+last);
            System.out.println("last:"+(nums[n]-nums[last]));
//            System.out.println("sum,add:"+(nums[i]-nums[start]));
            sum+=nums[n]-nums[last];
            if(sum>max){
                max=sum;
            }
            return;
        }
        //分割
        if(count>0) {
            cur.add(idx);
            dfs(nums, count - 1, idx + 1, cur);
            cur.remove(cur.size() - 1);
        }
        //不分割
        if(nums.length-idx-1>count) {
            dfs(nums, count, idx + 1, cur);
        }
    }
}

#360#
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-07 12:20
新余学院 Java
点赞 评论 收藏
分享
感觉他们一点都不了解现在这个社会就业有多难,已经在牛客刷到好多篇&nbsp;延毕的帖子了,延毕就会导致已经找好的工作就没了,还得重新再找,学校和老师们是怎么想的呢????看到学生丢失工作会开心吗&nbsp;就业数据都在造假,真实的就业困难不去解决&nbsp;一个个真是好样的
从明天开始狠狠卷JV...:学生看到的是导师不放实习导致offer黄了。 导师看到的是招进来的学生吃自己补助和自己的招生名额,却没给自己升迁带来任何帮助,还要跑路。 根本利益的不一致,最主要留校的导师大概率是职场上招聘失败的,被迫留校的,什么牛鬼蛇神都会有
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务