实现编程对于一个元素为数字1-9的集合A(每个数字的数量不超过4个,集合中元素的数量不超过14个),判断其是否满足如下规则: 集合A可以分割为若干个由3个数字组成的集合Bo...Bn和一个由2个数字组成的集合C。其中Bo...Bn需要满足每个集合中的数字均相等或者依次递增一(例如5 5 5以及4 5 6均满足条件);C中的两个数字相等 显然,当集合中的元素个数等于3n+2(n=0,1..4)时才有可能满足上述条件,我们将元素个数不为3n+2的集合称为“相公”的集合,满足上述条件的集合称为能够“胡”的集合,否则则是“不胡”的集合
时间: 2024-04-06 15:33:03 浏览: 17
下面是一个C++实现判断集合是否能够“胡”的例子:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool check(vector<int>& nums) {
int n = nums.size();
if (n % 3 != 2) {
return false; // 集合不是3n+2的相公集合
}
sort(nums.begin(), nums.end()); // 先排序
for (int i = 0; i < n; ) {
int cnt = 1;
while (i + cnt < n && nums[i+cnt] == nums[i]) {
cnt++; // 统计相同数字的数量
}
if (cnt > 4) {
return false; // 有数字出现次数超过4次
}
if (cnt == 1) { // 如果是单个数字,则必须是C中的数字
if (i == n - 2 || nums[i] != nums[n-1]) {
return false;
}
} else if (cnt == 2) { // 如果是两个数字,则必须是C中的数字
if (i != n - 2 || nums[i] != nums[i+1]) {
return false;
}
} else if (cnt == 3) { // 如果是三个数字,则必须是一个Bo或Bn
if (i == n - 1 || nums[i+2] != nums[i] + 2) {
return false;
}
} else if (cnt == 4) { // 如果是四个数字,则必须是两个Bo或Bn
if (i == n - 1 || nums[i+3] != nums[i] + 3 || nums[i+2] != nums[i] + 2) {
return false;
}
}
i += cnt; // 移动指针
}
return true;
}
int main() {
vector<int> nums = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5};
if (check(nums)) {
cout << "能够胡" << endl;
} else {
cout << "不能胡" << endl;
}
return 0;
}
```
在上面的例子中,我们定义了一个check()函数,用于判断集合是否能够“胡”。首先,我们判断集合是否是3n+2的相公集合,如果不是,则直接返回false。然后,我们对集合进行排序,并扫描集合中的所有数字。如果有数字的出现次数超过4次,则返回false。对于单个数字,它必须是C中的数字;对于两个数字,它们也必须是C中的数字;对于三个数字,它们必须是一个Bo或Bn;对于四个数字,它们必须是两个Bo或Bn。如果集合中的数字都符合这些条件,则返回true,否则返回false。在main()函数中,我们创建了一个包含14个数字的集合,并调用check()函数进行判断。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)