C++信奥教学PPT:CSP_J_算法之双指针算法(中)
























1、⼀个⻓度为 n-1 的递增排序数组中的所有数字都是唯⼀的,并且每个数字都在范围0~n-1 之内。在范围 0~ n-1 内的 n 个数字中有且只有⼀个数字不在该数组中,请找出这个数字。

2、循环最大值(Maximum in the Cycle of 1, North America-Greater NY 2011,LA5807)如果P是整数序列1~n的一个排列,定义P中1循环最大值为P(1), P(P(1)),P(P(P(1)))...的最大值。例如,假如P是如下的排列:|1 2 3 4 5 6 7 8||3 2 5 4 1 7 8 6|那么有:P(1)=3,P(P(1))=P(3)=5,P(P(P(1)))=P(5)=1。所以1循环最大值为5。对于给定的n(1≤n≤20)和k(1≤k≤n),输出n的所有排列中1循环最大值为k的排列的个数。使用双精度浮点数double输出结果。

3、疯狂的兽医(Mad Veterinarian, North America-Greater NY 2012, LA6178)有个疯狂的兽医开发了一个机器,可以把1种动物转换成其他的1种或者多种动物,并且可以反向转换。例如,有3个机器A、B、C:□ A可以把1个蚂蚁(a)变成1个海狸(b)。□ B可以把1个海狸(b)变成1个蚂蚁(a)、1个海狸(b)和1个美洲狮(c)。□ C可以把1个美洲狮(c)变成1个蚂蚁(a)和1个海狸(b)。我们能把一个海狸和一个美洲狮变成3个蚂蚁吗?是的:{b,c} C→{a,2b}-A反向→{2a,b} A反向→3a。能把1个蚂蚁变成2个蚂蚁吗?否。转换规则如下:(1)在正向模式下,每个机器都可以把1种动物变成有限非空的一个动物集合,动物的种类都是固定的。(2)每个机器都可反向操作。(3)每一种动物都有一个机器在正向模式下把它作为输入。给出初始和目标的动物集合以及其中每种动物的数量,计算能否把初始集合变成目标集合,正向和反向转换都可用。并且需要找出最短的转换路径,本题中只有3种机器A、B、C。

相关推荐
User_芊芊君子20 分钟前
【Java面试题】——this 和 super 的区别
java·开发语言
柴薪之王、睥睨众生21 分钟前
(自用)Java学习-5.8(总结,springboot)
java·开发语言·spring boot·学习·mybatis
牛马baby21 分钟前
Java高频面试之并发编程-17
java·开发语言·面试
让我们一起加油好吗22 分钟前
【C++】模板(初阶)
开发语言·c++·visualstudio·模板·泛型编程
灏瀚星空1 小时前
基于Python的量化交易实盘部署与风险管理指南
开发语言·python
Run_Teenage1 小时前
C++类和对象:运行符重载、取地址运算符重载、const 修饰的类如何作为参数
开发语言·c++
一只小bit1 小时前
More Effective C++:改善编程与设计(上)
开发语言·c++·方法·技巧
钢铁男儿2 小时前
C# 方法(栈帧)
开发语言·c#
强盛小灵通专卖员2 小时前
分类分割详细指标说明
人工智能·深度学习·算法·机器学习
忆源4 小时前
【Qt】之音视频编程1:QtAV的背景和安装篇
开发语言·qt·音视频