京东笔试,一题消消乐,二题是否是连通迷宫,大家都过了多少?

rt    100  18#京东##笔试题目#
全部评论
消消乐的代码,我第二题是消消乐,第一题是字母转换,不太一样.发一下第二题的. 第一题的找不到了..我直接删掉了 #include<bits/stdc++.h> using namespace std; int helper(vector<vector<int>>&nums, int i, int j) { int ret = 1; int cur = nums[i][j]; if (i < 0 || j < 0 || i >= 5 || j >= 5 || nums[i][j] == 0) return 0; nums[i][j] = 0; if (i >= 1 && nums[i - 1][j]==cur) { ret += helper(nums, i - 1, j); }if (j >= 1 && nums[i][j - 1] == cur) { ret += helper(nums, i, j - 1); }if (i <= 3 && nums[i + 1][j] == cur) { ret += helper(nums, i + 1, j); } if (j <= 3 && nums[i][j + 1] == cur) { ret += helper(nums, i, j + 1); } return ret; } // 消除并且把上面的落下来 void funcDrop(vector<vector<int>>&nums, int i, int j) { for (int j = 0;j < 5; j++) { int count = 4; for (int i = 4; i >= 0; i--) { if (nums[i][j] != 0) { nums[count--][j] = nums[i][j]; } } for (int i = count; i >= 0; i--) { nums[i][j] = 0; } } return; } int func(vector<vector<int>>&nums) { int ret = INT_MAX; vector<vector<int>>tmp = nums; int tag = 1; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { tmp = nums; // 假设点击这个 int count = helper(tmp, i, j); if (count >= 3) { // 吧当前消除并且上面的落下来... funcDrop(tmp, i, j); ret = min(ret, func(tmp)); tag = 0; } } } // 表示当前的矩阵不能在消除了 if (tag) { int count = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (nums[i][j] != 0) { count++; } } } return count; } return ret; } int main() { vector<vector<int>>nums(5, vector<int>(5, 0)); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { cin >> nums[i][j]; } } cout << func(nums) << endl; return 0; }
点赞 回复 分享
发布于 2019-08-24 22:58
tql 消消乐怎么做
点赞 回复 分享
发布于 2019-08-24 21:06
第二题最后提交了93.7的时候  时间截止了   我测试样例是过了    很痛苦
点赞 回复 分享
发布于 2019-08-24 21:33
我这里没有代码了, 我没保存   不是我不分享啊  我是真的就在赛码的网页里写的  没用自己的ide
点赞 回复 分享
发布于 2019-08-24 21:19
36 100
点赞 回复 分享
发布于 2019-08-24 21:18
求大佬给第一题代码
点赞 回复 分享
发布于 2019-08-24 21:17
大佬求分享思路
点赞 回复 分享
发布于 2019-08-24 21:16
大佬们跪求代码
点赞 回复 分享
发布于 2019-08-24 21:15
0   第二题dfs a了个样例超时了🤨
点赞 回复 分享
发布于 2019-08-24 21:15
可以发下代码不?说下思路也行😂
点赞 回复 分享
发布于 2019-08-24 21:14
package BISHI; import java.util.Arrays; import java.util.Scanner; /**  * 合唱队的N名学生站成一排且从左到右编号为1到N,其中编号为i的学生身高为Hi。 现在将这些学生分成若干组(同一组的学生编号连续),  * 并让每组学生从左到右按身高从低到高进行排列,使得最后所有学生同样满足从左到右身高 从低到高(中间位置可以等高),那么最多能将这些学生分成多少组?  * 合唱队的N名学生站成一排且从左到右编号为1到N,其中编号为i的学生身高为Hi。 现在将这些学生分成若干组(同一组的学生编号连续),  * 并让每组学生从左到右按身高从低到高进行排列,使得最后所有学生同样满足从左到右身高从低 到高(中间位置可以等高),那么最多能将这些学生分成多少组?  * 第一行包含一个整数N,1≤N≤10^5。  *   * 第二行包含N个空格隔开的整数H1到HN,1≤Hi≤10^9。 4 2 1 3 2  *   * @author gary  *  */ public class test4 {     public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         while (scanner.hasNext()) {             int n = scanner.nextInt();             int[] a = new int[n];             int[] b = new int[n];             for (int i = 0; i < a.length; i++) {                 a[i] = scanner.nextInt();                 b[i] = a[i];             }             Arrays.sort(b);             int ans = 0;             int cha = 0;             int index = 0;             for (int i = 0; i < b.length; i++) {                 if (a[i] == b[i]) {                     ans++;                 } else {                     if (cha == 0) {                         index = i;                     //    System.out.println(index);                     }                     for (int j = index; j < b.length; j++) {                         if (a[i] == b[j]) {                             System.out.println(j-i);                             cha += j - i;                             if (cha == 0) {                                 ans+=i-index+1;                             }                             break;                         }                     }                 }             }             System.out.println(ans);         }     } }
点赞 回复 分享
发布于 2019-08-24 21:13
第一题是不是回溯可以弄出来
点赞 回复 分享
发布于 2019-08-24 21:12
print(3) 36%
点赞 回复 分享
发布于 2019-08-24 21:11
大佬分享下代码😫
点赞 回复 分享
发布于 2019-08-24 21:10
求第一题思路
点赞 回复 分享
发布于 2019-08-24 21:10
求第一题思路,大佬
点赞 回复 分享
发布于 2019-08-24 21:09
楼主发下第一题答案
点赞 回复 分享
发布于 2019-08-24 21:07
第一题求思路
点赞 回复 分享
发布于 2019-08-24 21:07
第一题求思路
点赞 回复 分享
发布于 2019-08-24 21:06
第一题求思路
点赞 回复 分享
发布于 2019-08-24 21:05

相关推荐

07-25 11:26
清华大学 Java
打开电脑,思绪又回到了7月份刚开始的时候,感觉这个月过的如梦如幻,发生了太多事,也算是丰富了我本就是平淡的人生吧太早独立的我习惯了一切都是自己做决定,拥有绝对的决定权,而且永远不会听取别人的建议。我就是那个恋爱四年出轨的男主啦,感觉既然在牛客开了这个头,那我就要做个有始有终的人。从我出轨到结束再到和女朋友和好如初真的太像一场梦了,短短的一个月我经历了太多,也成长了很多,放下了那些本就不属于我的,找回了那些我不该放弃的。我的人生丰富且多彩,但人不能一直顺,上天总会让你的生活中出点乱子,有好有坏,让你学会一些东西,让你有成长。我和女朋友的恋爱四年太过于平淡,日常除了会制造一些小浪漫之外,我们的生活...
段哥亡命职场:不得不说,我是理解你的,你能发出来足见你是个坦诚的人,至少敢于直面自己的内心和过往的过错。 这个世界没有想象中那样非黑即白,无论是农村还是城市,在看不见的阴影里,多的是这样的事。 更多的人选择站在制高点去谩骂,一方面是社会的道德是需要制高点的,另一方面,很多人不经他人苦,却劝他人善。 大部分的我们,连自己生命的意义尚且不能明晰,道德、法律、困境,众多因果交织,人会迷失在其中,只有真的走出来之后才能看明白,可是没走出来的时候呢?谁又能保证自己能走的好,走的对呢? 可是这种问题有些人是遇不到的,不去追寻,不去探寻,也就没了这些烦恼,我总说人生的意义在过程里,没了目标也就没了过程。 限于篇幅,没法完全言明,总之,这世界是个巨大的草台班子,没什么过不去了,勇敢面对,革故鼎新才是正确,祝你早日走出来。查看图片
点赞 评论 收藏
分享
评论
2
13
分享

创作者周榜

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