网易互联网笔试(3.27)网易互联网3.27日笔试,四道笔试题一道简答题,四道笔试题AK,简答题考察设计模式不会 。
第一道题模拟使用单体技能和群体技能攻击怪物的场景、第二题字符串处理、第三题构造具有限制条件的完全二叉树、第四题动态规划问题 。
题目第一题
- 题意
- 临场思路
临场没有思考清楚这一问题,直接暴力比较三种策略(答案出自这三种策略之一):
- 仅使用单体技能
- 仅使用群体技能
- 先使用群体技能消耗直到一只怪死亡、再使用单体技能带走另一只怪 。
- 题意
- 临场思路
- 长度为1:无法标记 。
- 长度为大于1的偶数:可全部标记,获取所有分数 。
- 长度为大于1的奇数:需要选择一个字符放弃标记,选择的原则是该字符左右两边子串长度为偶数,且为满足这一条件的最小值 。最后获取所有标记字符的分数 。
- 题意
- 临场思路
第四题
- 题意
- 临场思路
定义二维数组dp[n][m],dp[i][j]表示移动到位置(i,j)的最小代价 。
可以从左、上、右三个相邻格子移动到(i,j)位置,考虑到从右边移动到(i,j)代价必定高于从上方移动,还剩下两种情况 。递推公式为:dp[i][j]=min(dp[i-1][j],dp[i][j-1])(此公式仅表示状态之间的依赖关系) 。
代码第一题
#include "bits/stdc++.h"using namespace std;int method1(int a, int b, int x, int y);int method2(int a, int b, int x, int y);int method3(int a, int b, int x, int y);int main(){ int a, b; int x, y; cin >> a >> b >> x >> y; int cnt = INT_MAX; cnt = min(cnt, method1(a, b, x, y)); cnt = min(cnt, method2(a, b, x, y)); cnt = min(cnt, method3(a, b, x, y)); cout << cnt << endl; return 0;}int method1(int a, int b, int x, int y){ int cnt = (a + x - 1) / x + (b + x - 1) / x; return cnt;}int method2(int a, int b, int x, int y){ int cnt = 0; int low = min(a, b); int high = max(a, b); cnt += (low + y - 1) / y; cnt += (high - cnt * y + x - 1) / x; return cnt;}int method3(int a, int b, int x, int y){ int cnt = max((a + y - 1), (b + y - 1)) / y; return cnt;}第二题#include "bits/stdc++.h"using namespace std;int main(){ string str; cin >> str; int score = 0; int i = 0; while (i < str.size()) {int j = i + 1;while (j < str.size() && (str[j] == str[j - 1] || abs(str[j] - str[j - 1]) == 1))j++;for (int k = i; k < j; k++)score = score + str[k] - 'a' + 1;if ((j - i) % 2 == 1) {char min_char = 'z';for (int k = i; k < j; k++) {if ((k - i) % 2 == 0 && str[k] < min_char)min_char = str[k];}score = score - (min_char - 'a' + 1);}i = j; } cout << score << endl; return 0;}第三题#include "bits/stdc++.h"using namespace std;int main(){ int n; cin >> n; for (int i = 2; i <= n; i += 2) {cout << i << ' '; } for (int i = 1; i <= n; i += 2) {cout << i << ' '; } return 0;}第四题【3.27 网易互联网笔试】#include "bits/stdc++.h"using namespace std;int main(){ int n, m; cin >> n >> m; vector<vector<int>> board(n, vector<int>(m)); vector<vector<int>> dp(n, vector<int>(m, INT_MAX)); for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cin >> board[i][j];} } dp[0][0] = 0; for (int j = 1; j < m; j++) {dp[0][j] = dp[0][j - 1] + (board[0][j] == board[0][j - 1] ? 1 : 2); } for (int i = 1; i < n; i++) {dp[i][0] = dp[i - 1][0] + (board[i][0] == board[i - 1][0] ? 1 : 2); } for (int i = 1; i < n; i++) {for (int j = 1; j < m; j++) {dp[i][j] = min(dp[i][j], dp[i - 1][j] + (board[i - 1][j] == board[i][j] ? 1 : 2));dp[i][j] = min(dp[i][j], dp[i][j - 1] + (board[i][j - 1] == board[i][j] ? 1 : 2));} } cout << dp[n - 1][m - 1] << endl; return 0;}
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
