c++饼干贪心算法具体代码
时间: 2023-10-23 07:43:09 浏览: 37
下面是一个饼干贪心算法的具体代码实现,使用了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++代码
以下是单源最短路径贪心算法的C++代码:
```c++
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
const int MAXN = 1005;
const int INF = 0x3f3f3f3f;
struct Edge {
int to, w;
Edge(int to, int w) : to(to), w(w) {}
};
vector<Edge> G[MAXN];
int d[MAXN];
bool vis[MAXN];
void dijkstra(int s) {
memset(d, INF, sizeof(d));
memset(vis, false, sizeof(vis));
d[s] = 0;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
q.push(make_pair(0, s));
while (!q.empty()) {
int u = q.top().second;
q.pop();
if (vis[u]) continue;
vis[u] = true;
for (int i = 0; i < G[u].size(); i++) {
int v = G[u][i].to;
int w = G[u][i].w;
if (d[v] > d[u] + w) {
d[v] = d[u] + w;
q.push(make_pair(d[v], v));
}
}
}
}
int main() {
int n, m, s, t;
cin >> n >> m >> s >> t;
for (int i = 0; i < m; i++) {
int u, v, w;
cin >> u >> v >> w;
G[u].push_back(Edge(v, w));
}
dijkstra(s);
cout << d[t] << endl;
return 0;
}
```
活动安排问题贪心算法c++代码
活动安排问题是指在一组互相竞争的活动中,选择出最大的相容活动子集。贪心算法的思路是优先选择结束时间早的活动,因为结束时间早的活动留下的空闲时间多,可以给其他活动提供更多机会。通过这种方式,可以找到一个最大的相容活动子集。以下是C++代码实现:
```
#include<iostream>
using namespace std;
void sort(int n,int s[],int f[]) {
int a,b,i,j;
for(i=1;i<=n;i++) {
for(j=i+1;j<=n;j++) {
if(f[i]>f[j]) {
a=f[i];f[i]=f[j];f[j]=a;
b=s[i];s[i]=s[j];s[j]=b;
}
}
}
}
int GreedySelect(int n,int s[],int f[],bool A[]) {
A[1]=true;
int j=1,count=1;
for(int i=2;i<=n;i++){
if(s[i]>=f[j]){
A[i]=1;
j=i;
count++;
}
else A[i]=0;
}
return count;
}
int main(){
int n,s[50],f[50];
bool A[50];
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i]>>f[i];
}
sort(n,s,f);
cout<<GreedySelect(n,s,f,A)<<endl;
return 0;
}
```