字节跳动秋招第三次笔试思路分享

  1. 数组暴力模拟的,O(n^2)
  2. BFS,当前状态不在hashmap里面就递归搜索,在了的话看看是不是当前是不是最小,是的话需要更新最小
  3. 没看懂样例,我变菜了。。
  4. 始终判断当前长度。
    当前长度=1,直接输出前半部分+最后的一个(一定存在)
    当前长度=2,拿一位解密,一定可行。判断这两位数连起来能不能解密,不能就退出,能的话长度 -2 递归​

From 春招一面挂去了友商的小伙伴...

#字节跳动##笔试题目#
全部评论
同三题,第二题搞了好久,第三题一直没想到正解
点赞 回复 分享
发布于 2019-09-08 21:11
大佬,求分享一波代码啊😂
点赞 回复 分享
发布于 2019-09-08 21:11
第三题就是个坑比,题意自己没讲清楚,比如如果碰到0破坏了方块那这一步还算不算是一步,连续两次遇到转向破坏了第二个转向,第二个转向还转不转 最后时间不够了,交了卷才写出了能AC的代码- - #include<iostream> #include<vector> #include<string> using namespace std; int main() { int n, m, q; cin >> n >> m >> q; vector<int> stage; while (n--) { string cur; cin >> cur; if (cur[0] == '<') stage.emplace_back(-2); else if (cur[0] == '>') stage.emplace_back(-3); else stage.emplace_back(stoi(cur)); } while (q--) { int start, end; cin >> start >> end; vector<int> cur_stage(stage.begin() + start - 1, stage.begin() + end); int i = 0, score = 0, direct = 1; bool flag = false; while (i >= 0 && i < cur_stage.size()) { if (cur_stage[i] > 0) { flag = false; score += cur_stage[i]; cur_stage[i]--; } else if (cur_stage[i] != 0){ if (!flag) { if (cur_stage[i] == -2) direct = 0; else direct = 1; flag = true; } else cur_stage[i] = 0; } if (direct) i++; else i--; } cout << score << endl; } system("pause"); return 0; }
点赞 回复 分享
发布于 2019-09-08 21:16
这个复杂度能过?? 也太假了 、、、
点赞 回复 分享
发布于 2019-09-08 21:35
大佬能分享一下第二题bfs的代码吗?
点赞 回复 分享
发布于 2019-09-08 22:34
第二题代码 #include "bits/stdc++.h" using namespace std; int x,y,z,target; struct state{     int x,y,z,step; }f; queue<state> q; bool vis[200+10][200+10][200+10]; int bfs() {     q.push(f);     vis[f.x][f.y][f.z]=1;     while(q.size())     {         f=q.front(); q.pop();         if(f.x==target||f.y==target||f.z==target) return f.step;         if(f.x<x&&vis[x][f.y][f.z]==0) //x倒满         {             q.push((state){x,f.y,f.z,f.step+1});             vis[x][f.y][f.z]=1;         }         if(f.x&&vis[0][f.y][f.z]==0) //x倒空         {             q.push((state){0,f.y,f.z,f.step+1});             vis[0][f.y][f.z]=1;         }         if(f.y<y&&vis[f.x][y][f.z]==0) //y倒满         {             q.push((state){f.x,y,f.z,f.step+1});             vis[f.x][y][f.z]=1;         }         if(f.y&&vis[f.x][0][f.z]==0) //y倒空         {             q.push((state){f.x,0,f.z,f.step+1});             vis[f.x][0][f.z]=1;         }         if(f.z<z&&vis[f.x][f.y][z]==0) //z倒满         {             q.push((state){f.x,f.y,z,f.step+1});             vis[f.x][f.y][z]=1;         }         if(f.z&&vis[f.x][f.y][0]==0) //z倒空         {             q.push((state){f.x,f.y,0,f.step+1});             vis[f.x][f.y][0]=1;         }         if(f.x>=y-f.y&&vis[f.x-(y-f.y)][y][f.z]==0)//x->y         {             q.push((state){f.x-(y-f.y),y,f.z,f.step+1});             vis[f.x-(y-f.y)][y][f.z]=1;         }         if(f.x<y-f.y&&vis[0][f.x+f.y][f.z]==0)//x->y         {             q.push((state){0,f.x+f.y,f.z,f.step+1});             vis[0][f.x+f.y][f.z]=1;         }         if(f.y>=x-f.x&&vis[x][f.y-(x-f.x)][f.z]==0)//y->x         {             q.push((state){x,f.y-(x-f.x),f.z,f.step+1});             vis[x][f.y-(x-f.x)][f.z]=1;         }         if(f.y<x-f.x&&vis[f.x+f.y][0][f.z]==0)//y->x         {             q.push((state){f.x+f.y,0,f.z,f.step+1});             vis[f.x+f.y][0][f.z]=1;         }         if(f.x>=z-f.z&&vis[f.x-(z-f.z)][f.y][z]==0)//x->z         {             q.push((state){f.x-(z-f.z),f.y,z,f.step+1});             vis[f.x-(z-f.z)][f.y][z]=1;         }         if(f.x<z-f.z&&vis[0][f.y][f.x+f.z]==0)//x->z         {             q.push((state){0,f.y,f.x+f.z,f.step+1});             vis[0][f.y][f.x+f.z]=1;         }         if(f.y>=z-f.z&&vis[f.x][f.y-(z-f.z)][z]==0)//y->z         {             q.push((state){f.x,f.y-(z-f.z),z,f.step+1});             vis[f.x][f.y-(z-f.z)][z]=1;         }         if(f.y<z-f.z&&vis[f.x][0][f.y+f.z]==0)//y->z         {             q.push((state){f.x,0,f.y+f.z,f.step+1});             vis[f.x][0][f.y+f.z]=1;         }         if(f.z>=x-f.x&&vis[x][f.y][f.z-(x-f.x)]==0)//z->x         {             q.push((state){x,f.y,f.z-(x-f.x),f.step+1});             vis[x][f.y][f.z-(x-f.x)]=1;         }         if(f.z<x-f.x&&vis[f.x+f.z][f.y][0]==0)//z->x         {             q.push((state){f.x+f.z,f.y,0,f.step+1});             vis[f.x+f.z][f.y][0]=1;         }         if(f.z>=y-f.y&&vis[f.x][y][f.z-(y-f.y)]==0)//z->y         {             q.push((state){f.x,y,z-(y-f.y),f.step+1});             vis[f.x][y][z-(y-f.y)]=1;         }         if(f.z<y-f.y&&vis[f.x][f.y+f.z][0]==0)//y->z         {             q.push((state){f.x,f.y+f.z,0,f.step+1});             vis[f.x][f.y+f.z][0]=1;         }     }     return -1; } int main() {     scanf("%d%d%d%d",&x,&y,&z,&target);     int ans=bfs();     cout<<ans<<endl;     return 0; }
点赞 回复 分享
发布于 2019-09-08 22:40

相关推荐

10-15 09:13
已编辑
天津大学 soc前端设计
点赞 评论 收藏
分享
11-03 14:38
重庆大学 Java
AAA求offer教程:我手都抬起来了又揣裤兜了
点赞 评论 收藏
分享
评论
点赞
2
分享
正在热议
# 25届秋招总结 #
442727次浏览 4513人参与
# 春招别灰心,我们一人来一句鼓励 #
42019次浏览 533人参与
# 阿里云管培生offer #
120308次浏览 2220人参与
# 地方国企笔面经互助 #
7965次浏览 18人参与
# 同bg的你秋招战况如何? #
76850次浏览 564人参与
# 实习必须要去大厂吗? #
55781次浏览 961人参与
# 北方华创开奖 #
107445次浏览 600人参与
# 虾皮求职进展汇总 #
115819次浏览 886人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11607次浏览 288人参与
# 实习,投递多份简历没人回复怎么办 #
2454766次浏览 34858人参与
# 提前批简历挂麻了怎么办 #
149907次浏览 1977人参与
# 在找工作求抱抱 #
906050次浏览 9421人参与
# 如果公司给你放一天假,你会怎么度过? #
4759次浏览 55人参与
# 你投递的公司有几家约面了? #
33209次浏览 188人参与
# 投递实习岗位前的准备 #
1195967次浏览 18550人参与
# 机械人春招想让哪家公司来捞你? #
157638次浏览 2267人参与
# 双非本科求职如何逆袭 #
662289次浏览 7397人参与
# 发工资后,你做的第一件事是什么 #
12764次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35833次浏览 384人参与
# 简历中的项目经历要怎么写? #
86924次浏览 1516人参与
# 参加完秋招的机械人,还参加春招吗? #
20137次浏览 240人参与
# 我的上岸简历长这样 #
452024次浏览 8088人参与
牛客网
牛客企业服务