首页 > 编程语言 >每天打卡一小时 第三十天 贪心算法

每天打卡一小时 第三十天 贪心算法

时间:2023-05-18 22:35:17浏览次数:40  
标签:cookies int 算法 vector child 打卡 children 贪心

 

#include<bits/stdc++.h>
using namespace std;

int findContentChildren(vector<int>& children, vector<int>& cookies);

int main()
{
    int n;
    cin>>n;
    vector<int> children(n);
    for(int i=0;i<n;i++)
    {
        if(!(cin>>children[i]))
		{
            cout<<"invalid input"<<endl;
            return 0;
        }
    }
	
    int m;
    cin>>m;
    vector<int> cookies(m);
    for(int i=0;i<m;i++)
    {
        if(!(cin>>cookies[i]))
		{ 
            cout<<"invalid input"<<endl;
            return 0;
        }
    }
    
    cout<<findContentChildren(children, cookies);
	
} 

int findContentChildren(vector<int>& children, vector<int>& cookies)
{
	sort(children.begin(), children.end());
	sort(cookies.begin(), cookies.end());
	int child = 0, cookie = 0;
	while (child < children.size() && cookie < cookies.size())
	{
		if (children[child] <= cookies[cookie]) 
		    ++child;
		else
		    ++cookie;
	}
	return child;
}

  

标签:cookies,int,算法,vector,child,打卡,children,贪心
From: https://www.cnblogs.com/youxiandechilun/p/17413481.html

相关文章

  • 编程打卡:面向对象程序设计测试
    #include<iostream>#include<iomanip>#include<string>#include<bitset>usingnamespacestd;intmain(){intx;cin>>oct>>x;cout<<dec<<x<<endl;cout<<setw(20)&l......
  • 打卡
    1.问题:输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。例如,153是一个水仙花数,因为153=1³+5³+3³。2.思路:水仙花数的解题思路是把给出的某个三位数的个位、十位、百位分别拆分,并求其立方和。3.程序流程图: 4.代码实现:#include<ios......
  • 邻接表的建立算法
    StatusCreate(ALGraph*G){ inti,j,k; charv1[20],v2[20]; ArcNode*p,*q; printf("请输入顶点数和边数:"); scanf("%d%d",&G->vertices,&G->arcnum); for(i=0;i<G->vexnum;i++) { scanf("%s",G->vertices[i].data)......
  • 5.18打卡
    一、实验内容定义一个Dog类,包括体重和年龄两个数据成员及其成员函数,声明一个实例dog1,体重5,年龄10,使用I/O流把dog1的状态写入磁盘文件。再声明一个实例dog2,通过读取文件dog1的状态赋给dog2。分别用文本方式和二进制方式操作文件。二、实验代码#include<bits/stdc++.h>usingna......
  • 5-18打卡
    递归写爬楼梯#include<stdio.h>//定义一个函数,用来打印每次爬的台阶数voidprint_steps(intsteps[],intn){printf("一种可能的方法是:");for(inti=0;i<n;i++){printf("%d",steps[i]);}printf("\n");}//定义一个递......
  • 每日打卡
    把真分数分解为埃及分数问题描述:古埃及人用的分数都是分子为一的分数,将真分数拆分成埃及分数问题分析:1如果分子为1直接输出2.分母是分子的倍数,化简后输出3.如果不能消去的话可以分出一个a/b+1和c出来代码:#include<stdio.h>intmain(){ longinta,b,c; printf("请输入a......
  • c++打卡练习(33)
    求一个真分数的埃及分数表示埃及分数是指只使用1作为分子的分数,例如8/11=1/2+1/5+1/55+1/110;流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ inta,b,c,i,j; cout<<"请输入一个真分数"<<endl; cin>>a; getchar(); cin>>b; if(a>b){ cout<<......
  • 第二十三天打卡
    一、问题描述C语言实现两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。二、设计思路1、a和b都是3000以内2、穷举a在3000以内(或穷举b在3000以内)3、通过......
  • 打卡 c语言趣味编程 求最小公倍数
    问题描述:求任意两个正整数的最小公倍数(LCM)。思路:输入两个正整数,假设为num1和num2。定义一个变量lcm并初始化为较大的那个数(即lcm=max(num1,num2))。进入一个循环,循环条件为lcm不能同时被num1和num2整除。在每次循环中,将lcm增加1。循环结束后,lcm的值就是最小......
  • 5.18打卡
    一、问题描述:骰子是一个有六个面的正方体,每个面分别印有1~6之间的小圆点代表点数。假设这个游戏的规则是:两个人轮流掷骰子6次,并将每次投掷的点数累加起来。点数多者获胜;点数相同则为平局。要求编写程序模拟这个游戏的过程,并求出玩100盘之后谁是最终的获胜者。二、设计思路:由于每......