c++饼干贪心算法具体代码
时间: 2023-10-23 22:43:09 浏览: 79
下面是一个饼干贪心算法的具体代码实现,使用了Python语言:
def findContentChildren(g, s):
g.sort()
s.sort()
i = 0
for j in range(len(s)):
if i == len(g):
break
if s[j] >= g[i]:
i += 1
return i
g = [1,2,3]
s = [1,1]
print(findContentChildren(g, s)) # 输出1
g = [1,2]
s = [1,2,3]
print(findContentChildren(g, s)) # 输出2
g = [1,2,3]
s = [3]
print(findContentChildren(g, s)) # 输出1
在代码中,findContentChildren函数接收两个参数,一个是孩子的胃口列表g,另一个是饼干的大小列表s。函数首先对两个列表进行排序,然后使用i来记录已经满足的孩子数量,从第一个饼干开始遍历,如果饼干的大小大于等于当前孩子的胃口,则将i加1。如果饼干遍历完了,或者已经满足了所有孩子,就退出循环,返回已经满足的孩子数量i。最后,通过几个测试用例来验证代码的正确性。
相关问题
一个可运行的贪心算法分饼干C++
好的,这是一个典型的贪心算法问题。假设有m个孩子和n个饼干,每个孩子都有一个贪心因子g[i],每个饼干都有一个大小s[j]。我们需要将饼干分配给孩子,使得满足贪心条件的孩子个数最大。具体的思路如下:
1. 将孩子和饼干按照贪心因子和大小从小到大排序。
2. 从第一个孩子和第一个饼干开始,依次比较孩子的贪心因子和饼干的大小,如果饼干的大小可以满足孩子的贪心因子,就将这个饼干分配给这个孩子,并且继续考虑下一个孩子和下一个饼干;否则就考虑下一个饼干是否可以满足这个孩子的贪心因子,直到找到一个合适的饼干或者没有合适的饼干为止。
3. 继续考虑下一个孩子和下一个饼干,直到所有的孩子都被分配了饼干或者没有合适的饼干为止。
下面是一个可运行的C++代码实现:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int i = 0, j = 0;
while (i < g.size() && j < s.size()) {
if (g[i] <= s[j]) {
i++;
}
j++;
}
return i;
}
int main() {
vector<int> g = {1, 2, 3};
vector<int> s = {1, 1};
cout << findContentChildren(g, s) << endl; // 输出1
g = {1, 2};
s = {1, 2, 3};
cout << findContentChildren(g, s) << endl; // 输出2
return 0;
}
```
其中,g为贪心因子数组,s为饼干大小数组,函数返回可以满足的孩子个数。
一个可输入数据和可运行的贪心算法分饼干C++
好的,以下是一个可输入数据和可运行的贪心算法分饼干的C++代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int i = 0, j = 0;
while (i < g.size() && j < s.size()) {
if (g[i] <= s[j]) {
i++;
}
j++;
}
return i;
}
int main() {
int m, n;
cout << "请输入孩子个数m和饼干个数n:";
cin >> m >> n;
vector<int> g(m);
vector<int> s(n);
cout << "请输入每个孩子的贪心因子:";
for (int i = 0; i < m; i++) {
cin >> g[i];
}
cout << "请输入每个饼干的大小:";
for (int i = 0; i < n; i++) {
cin >> s[i];
}
int res = findContentChildren(g, s);
cout << "可以满足的孩子个数为:" << res << endl;
return 0;
}
```
以上代码通过cin输入数据,并通过cout输出结果。其中,g为贪心因子数组,s为饼干大小数组,函数返回可以满足的孩子个数。
阅读全文