晴问专题

【晴问算法】入门篇—递归—上楼

题目描述 我打算走楼梯上楼,共有n级台阶。 我身轻如燕,所以每次都可以选择上一级台阶或者两级台阶。 问有多少种上楼的方式。 例如当n= 3时,共有三种方式上楼: 1.一级 ->一级 ->一级 2.一级 ->二级 3.二级 ->一级 输入描述 一个正整数n(1≤n≤25),表示台阶级数。输出描述 一个正整数,表示上楼的方案数。 样例1 输入 1输出 1样例2 输入 2输出 2 样例3

【晴问算法】入门篇—日期处理—日期先后

题目描述 给定两个日期DAY1和DAY2,判断DAY1是否在DAY2之前。输入描述 前两行分别为日期DAY1和DAY2(格式为YYYY-MM-DD,范围为1900-01-01≤DAY≤2199-12-31),数据保证一定合法。输出描述 如果DAY1在DAY2之前,那么输出YES,否则输出NO. 样例1 输入  2021-05-01 2021-05-07输出 YES 样例2 输入

【晴问算法】提高篇—动态规划专题—最长上升子序列

题目描述 现有一个整数序列a1,a2,...,an​​​​​​,求最长的子序列(可以不连续),使得这个子序列中的元素是非递减的。输出该最大长度。 输入描述 第一行一个正整数n(1≤n≤100​​​​),表示序列长度; 第二行为用空格隔开的n​个整数ai​(−10^5≤ai≤10^5​​),表示序列元素。 输出描述 输出一个整数,表示最大长度。 样例1 输入 7

【晴问算法】入门篇—贪心算法—区间不相交问题

题目描述 给定n个开区间,从中选择尽可能多的开区间,使得这些开区间两两没有交集。 输入描述 输出描述 输出一个整数,表示最多选择的开区间个数。 样例1输入 4 1 3 2 4 3 5 6 7 输出 3 解释 最多选择(1,3)、(3,5)、(6,7)三个区间,它们互相没有交集。 #include<bits/stdc++.h

【晴问算法】入门篇—贪心算法—整数配对

题目描述 有两个正整数集合S、T,其中S中有n个正整数,T中有m个正整数。定义一次配对操作为:从两个集合中各取出一个数a和b,满足a∈S、b∈T、a≤b,配对的数不能再放回集合。问最多可以进行多少次这样的配对操作。  输入描述 输出描述 输出一个整数,表示最多的配对操作次数。 样例1 输入 3 3 2 5 3 3 3 4 输出 2  解释

【晴问算法】入门篇—贪心算法—最大组合整数

题目描述 现有0~9中各个数的个数,将它们组合成一个整数,求能组合出的最大整数。 输入描述 在一行中依次给出0-9中各个数的个数(所有个数均在0-100之间)。数据保证至少有一个数的个数大于0。 输出描述 输出一个整数,表示能组合出的最大整数。 样例1输入 1 0 2 0 0 0 0 0 0 1 输出 9220 解释 存在1个0、2

【晴问算法】入门篇—贪心算法—经典例题和个人题解

OJ平台链接:https://sunnywhy.com/sfbj/4/4/149 什么是贪心算法? 贪心算法的定义:采用局部最优的策略能得到全局最优的结果,即贪心选择性质。 除了贪心选择性质以外,能用贪心算法解决的问题还必须具有最优子结构性质。 最优子结构性质:问题的最优解所包含的子问题的解也是最优的 然而,并不是所有问题都适用贪心算法,完全适用贪心算法的问题必须具有最优子结构性质和贪心选择性