【今日三题】笨小猴(模拟) / 主持人调度(排序) / 分割等和子集(01背包)

目录
- 笨小猴(模拟)
- 主持人调度(排序)
- 分割等和子集(01背包)
笨小猴(模拟)
- 笨小猴
#include <iostream>
#include <string>
#include <cmath>
using namespace std;string s;
int arr[26];
int maxn = 0, minn = 100;bool check(int n)
{if (n < 2) return false;for (int i = 2; i <= sqrt(n); i++){if (n % i == 0) return false;}return true;
}
int main()
{cin >> s;for (auto ch : s) arr[ch - 'a']++;for (int i = 0; i < 26; i++){if (arr[i]){maxn = max(maxn, arr[i]);minn = min(minn, arr[i]);}}if (check(maxn - minn)){cout << "Lucky Word" << endl;cout << maxn - minn << endl;}else {cout << "No Answer" << endl;cout << 0 << endl;}return 0;
}
主持人调度(排序)
- 主持人调度
class Solution {
public:bool hostschedule(vector<vector<int> >& schedule) {sort(schedule.begin(), schedule.end());for (int i = 0; i < schedule.size() - 1; i++){if (schedule[i][1] > schedule[i + 1][0])return false;}return true;}
};
分割等和子集(01背包)
- 分割等和子集
#include <iostream>
#include <vector>
using namespace std;int n, sum;
int arr[501];int main()
{cin >> n;for (int i = 1; i <= n; i++){cin >> arr[i];sum += arr[i];}if (sum % 2 == 0){sum /= 2;vector<bool> dp(sum + 1);for (int i = 0; i <= n; i++) dp[0] = true;for (int i = 1; i <= n; i++)for (int j = sum; j >= arr[i]; j--)dp[j] = dp[j] || dp[j - arr[i]];if (dp[sum]) cout << "true" << endl;}else cout << "false" << endl;return 0;
}
本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~
