笔试强训(八)
一. 求最小公倍数
题目链接:
https://nowcoder.com/practice/22948c2cad484e0291350abad86136c3?tpId=37&tqId=21331&ru=/exam/oj


#include <iostream>
using namespace std;int gcd(int a, int b)
{if(b == 0) return a;return gcd(b, a % b);
}int main()
{int a, b;cin >> a >> b;cout << (a * b / gcd(a, b)) << endl;return 0;
}
二.数组中的最长连续子序列
题目链接:
https://www.nowcoder.com/practice/eac1c953170243338f941959146ac4bf?tpId=196&tqId=37143&ru=/exam/oj


class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** max increasing subsequence* @param arr int整型vector the array* @return int整型*/int MLS(vector<int>& arr) {// write code heresort(arr.begin(), arr.end());int n = arr.size(), ret = 0;for (int i = 0; i < n;){int j = i + 1, count = 1;while (j < n){if (arr[j] - arr[j - 1] == 1){count++;j++;}else if (arr[j] - arr[j - 1] == 0){j++;}else{break;}}ret = max(ret, count);i = j;}return ret;}
};
三.字母收集
题目链接:
https://www.nowcoder.com/practice/9740ce2df0a04399a5ade1927d34c1e1?tpId=230&tqId=38954&ru=/exam/oj


#include<iostream>using namespace std;
int dp[505][505];
int main()
{int n, m;cin >> n >> m;char a[n][m];for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){cin >> a[i][j];}}for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);if (a[i-1][j-1] == 'l'){dp[i][j] += 4;}else if (a[i-1][j-1] == 'o'){ dp[i][j] += 3;}else if (a[i-1][j-1] == 'v'){dp[i][j] += 2;}else if (a[i-1][j-1] == 'e'){dp[i][j] += 1;}}}cout << dp[n][m] << endl;return 0;
}