三只小猫 level
获赞
17
粉丝
6
关注
1
看过 TA
4
东北大学
2019
算法工程师
IP属地:江苏
暂未填写个人简介
私信
关注
2019-08-24 21:04
东北大学 算法工程师
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; }
投递京东等公司10个岗位 >
0 点赞 评论 收藏
分享
2019-08-19 10:03
已编辑
东北大学 算法工程师
rt
投递哔哩哔哩等公司10个岗位 >
0 点赞 评论 收藏
分享
2019-08-18 17:14
已编辑
东北大学 算法工程师
rt,100&nbsp;91&nbsp;18&nbsp;第二题怎么都调不出来,第三题时间来不及了,有很多大佬说二分,没想明白怎么二分额
冰雪童话:确定X的上界和下界,上界为血量最高的怪物,下界为T回合总输出刚好为怪物血量总和,然后贪心测试X是否合法,二分查找X
0 点赞 评论 收藏
分享
2019-08-18 09:49
已编辑
东北大学 算法工程师
0 点赞 评论 收藏
分享
2019-08-16 00:21
已编辑
东北大学 算法工程师
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务