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#
全部评论

相关推荐

05-12 10:10
已编辑
门头沟学院 人工智能
写这篇之前我犹豫了挺久。一方面是怕被人骂,&quot;又一个收割焦虑的转行帖&quot;;另一方面是看了太多用&nbsp;GPT&nbsp;套娃出来的「学习路线」文章,AI&nbsp;味重得让人没法读完。所以这篇全是亲身踩过的坑,时间线、用过的项目、当时的心路全都尽量原样写出来。如果你是大学生在迷茫要不要转&nbsp;AI,或者已经在转的路上,希望能给点参考。&nbsp;一个反共识的开场:你以为进&nbsp;OpenAI&nbsp;的人都是博士?&nbsp;先讲个故事,跟我没关系,但跟所有想转&nbsp;AI&nbsp;的人都有关系。&nbsp;OpenAI&nbsp;的&nbsp;Sora&nbsp;团队(就是搞文生视频那个)一共&nbsp;13&nbsp;个人。这里面有两个人特别有意思:&nbsp;Will&nbsp;DePue,密歇根大学计算机系,直接辍学了。17...
_hengheng:我也本,也算是做ai相关,我最开始感觉做ai工程师有多么多么困难,后来发现懂了原理后整体训练完全可以看成一个流程化的内容,开源方案太多了,大多基本都是按着模子在自家业务上做各种操作,就算是大厂的小部门也没那么多资源去训基模,反而更多的是像怎么把技术往业务方向靠近了,不过当前时代如果本科学历没那么好加上自己执行力不是特别强还真不建议走ai工程师这条路,可以试试其他ai的偏业务方向,不然校招不太好杀出来
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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