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


cpp
#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


cpp
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* max increasing subsequence
* @param arr int整型vector the array
* @return int整型
*/
int MLS(vector<int>& arr) {
// write code here
sort(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


cpp
#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;
}