- 博客(20)
- 收藏
- 关注
原创 洛谷P1650 田忌赛马
1.按照题目说的那样,田忌对齐王:最差的-最好的,最好的-中等的,中等的-最慢的,两胜一负。如果田忌最快的马比齐王最快的马慢,用田忌最慢的马对齐王最快的马,输掉比赛。如果田忌最慢的马比齐王最慢的马快,田忌可直接赢得 200 银币。rightA 和 rightB:田忌和齐王最快的马。leftA 和 leftB:田忌和齐王最慢的马。3.如果田忌最快的马比齐王最快的马快,直接赢。否则,用田忌最慢的马对齐王最快的马,输掉比赛。但这与直接用最慢的马对齐王最快的马的结果相同。如果田忌最慢的马比齐王最慢的马快,直接赢。
2025-03-15 14:22:26
306
原创 洛谷P10122 [USACO18OPEN] Team Tic Tac Toe B
3.使用两个集合 singleWinners 和 teamWinners 分别存储单独获胜的奶牛和两头一队获胜的队伍。2.在 checkLine 函数中,使用集合set对三个字符去重,判断是否满足单独奶牛获胜或两队奶牛获胜的条件。1.输入内容相当于字符矩阵,对于每一行、每一列,以及两条对角线,分别传入比较函数 checkLine。
2025-03-15 13:34:17
112
原创 CCF CSP第27次认证 何以包邮
总价 sum = 230,需要包邮 x = 100,最多可以去掉的金额:sum - x = 230 - 100 = 130。换个角度思考:从总价 sum(所有书的价格之和)中,最多能去掉多少钱?也就是说,要找一部分书,它们的价格加起来尽可能地接近 130。剩余总价 = 230 - 120 = 110。有四本书,那么有2^4 = 16 种组合。总价尽可能小(但是要达到 x 元包邮)3.寻找哪些书的组合价格<=130。把计算结果存起来,不用重复计算。一.暴力搜索(会超时)
2025-03-15 12:22:27
259
原创 洛谷P1679 神奇的四次方数
当 i 本身就是一个四次方数(如 1, 16, 81, 256, 625),那么 f[i] = 1,因为 i 自己就可以被表示成一个四次方数。1.列出所有 不超过 706 的四次方数:1, 2^4, 3^4, 4^4, 5^4。但 f[690] 仍然需要多个四次方数才能构成,所以此时 f[706] 不是最优解。2.初始化f[i],f[i] 代表组成 i 需要的最少四次方数的个数。f[625] = 1(625 本身是 5^4,已经是四次方数)遍历所有四次方数 k,检查 f[706 - k]
2025-03-15 10:06:05
224
原创 CCF CSP第32次认证 仓库规划
3.若满足条件,则输出所在行,并break,继续下一行与其他行的比较。1.二维数组当前行与其他行比较,所以前两个for循环都是<=n。4.已经找了所有行也没有满足的,条件就是j>n;2.每比较一次前,cnt清0。
2025-03-12 16:16:44
146
原创 CCF CSP第34次认证 矩阵重塑(其二)
3.转置操作(2 0 0) 遍历当前数组,交换 row 和 col。2.重塑操作(1 p q) 只修改行数 row 和列数 col。4.查询操作(3 i j) 直接按计算索引访问。1.一维数组存储数据。
2025-03-11 22:01:37
205
原创 CCF CSP第35次认证 密码
1.可先判断低强度,使用三个 bool 变量分别判断是否包含数字、字母和符号,若他们没有同时为 true,直接判定为低强度。可以用isalpha(ch) 判断字母,isdigit(ch) 判断数字字符。2.统计每个字符的出现次数,出现次数>2则为中强度,bool变量存储。3.最后条件判断输出。
2025-03-10 20:54:59
110
原创 B. DS单链表--结点交换
是为了表示链表中的每一个结点int val;int val:链表的每个节点都需要存储一个数据元素ListNode* next:是一个指针。指向链表中的下一个节点。通过它,将多个节点连接起来形成链表ListNode(int x) : val(x), next(nullptr):构造函数,用于初始化ListNode中的变量val,nextval(x):将传入的参数 x 赋值给结点的 val 成员变量。
2024-09-11 19:35:36
1544
1
原创 cpp练习:支票账户(虚函数与多态)
BasePlus支票账户除包含BaseAccount的所有信息外,还包括以下信息:透支上限(默认为5000),当前可透支额度(limitSum);BasePlus支票账户可执行的操作与BaseAccount相同,但有两种操作的实现不同:(1)对于取款操作,可以在透支上限范围内透支,超过则显示出错信息“insufficient”;BaseAccount支票账户可以执行的操作包括:存款(deposit)、取款(withdraw)、显示账户信息(display)。输出BaseAccount的信息。
2024-06-25 20:45:41
765
1
原创 cpp练习:电视遥控(静态+友元)
2、根据变化音量进行调整,例如原有音量为50,现输入变化音量为-30,则50-30=20,音量最终为20。接着输入t行,每行依次输入电视机编号i、模式k、频道号x和变化音量,其中i表示第i台电视机,k为1表示TV模式,k为2表示DVD模式。现编写一个遥控器函数,通过友元方法对电视机进行控制,它的参数包括电视机对象、模式、变化音量、频道号,无返回值。用动态数组方法创建n台电视机,从1开始编号,频道号为编号,音量初始为50,模式为TV,然后通过遥控器函数对电视机进行控制。所有类的数据成员都是私有属性。
2024-06-25 19:59:07
700
原创 cpp练习:矩形关系(运算符重载)
3)重载>运算符,第一个矩形若包含第二个矩形(部分边界可以相等),返回true,否则返回false。矩形1和矩形2的关系(矩形1包含矩形2、矩形2包含矩形1、矩形1和矩阵2相等、矩形1和矩形2相交、矩形1和矩形2不相交)方法有:带参构造函数,getX,getY分别返回点的x坐标,y坐标。2)重载>运算符,参数为CPoint点对象,假设为p,若p在矩形内,返回true,否则返回false。运算符在判断矩形是否包含另一个矩形时,利用了包含点的逻辑,巧妙地实现了两个矩形之间的包含关系判断。主函数如下,不可修改。
2024-06-25 15:18:05
311
原创 cpp练习:时钟模拟(继承)
定义时钟类,数据成员是私有循环计数器对象小时hour、分钟minute、秒second,公有函数time(int s)计算当前时间经过s秒之后的时间,即hour,minute,second的新value值。定义循环计算器继承计数器类,增加私有数据成员:最小值minValue,maxValue,定义时钟类对象,输入当前时间和经过的秒数,调用time函数计算新时间。每行对应每组当前时间和经过秒数后计算得到的新时间(小时:分钟:秒)。2行一组,第一行为当前时间(小时 分钟 秒),第二行为经过的秒数。
2024-06-25 14:31:19
317
原创 cpp练习:加湿风扇(期末模拟)
新增操作是预警,无参数,返回值为整数,当实际水容量不小于最大水容量的50%,则返回1;电风扇继承家电的特点,新增两个属性(整数):风向和风力,其中风向为0表示定向吹风,状态为1表示旋转吹风。如何理解:风向控制含一个整数参数,无返回,把风向设置为参数值,参数为0表示定向吹风,为1表示旋转吹风。2、风力控制含一个整数参数,无返回,把风力设置为参数值,参数表示风力级别,例如1级、2级、3级等。1、风向控制含一个整数参数,无返回,把风向设置为参数值,参数为0表示定向吹风,为1表示旋转吹风。
2024-06-23 10:16:34
666
原创 cpp练习:最小生日差值计算(运算符重载)
定义一个学生类Student,包含该学生的姓名、出生年、月、日 ,重定义 “-”号实现两个学生之间相差多少天的比较。并利用重载的“-”运算符,求所有学生中年龄相差最小的两个人的名字以及相差天数。输出年龄相差最小的两个人的名字以及相差天数,名字的输出顺序按输入的先后,天数大于等于0。第二行开始,依次输入每个学生的姓名、出生年、月、日。Tom和Joe年龄相差最小,为58天。第一行:输入所需要输入的学生个数;
2024-06-20 12:03:45
197
原创 cpp练习:商旅信用卡(多重继承)
生成旅程信用卡对象,输入卡信息,调用对象成员函数完成旅程网下单、信用卡刷卡、信用卡退款、信用卡积分兑换为旅程积分等操作。旅程信用卡可以按 旅程积分:信用卡积分= 1:2 的比例将信用卡积分兑换为旅程积分。旅程会员卡,有会员卡号(int)、旅程积分(int),通过会员卡下订单,按订单金额累计旅程积分。通过旅程信用卡在旅程网下单,旅程积分和信用卡积分双重积分(即旅程积分和信用卡积分同时增加)。信用卡退款m,账单金额-m,信用卡积分减去退款金额。初始假设信用卡积分、旅程积分、账单金额为0。
2024-06-19 14:26:42
197
原创 cpp练习:拯救小明(多继承+友元)
小明同学有着严重的拖延症,每次老师布置的作业都要到快要截止的时候才会开始动手完成,因此现在有着许许多多的作业完成。你是小明的好朋友,请帮小明找出最紧急的作业(即最早截止的作业)。// 判断作业w1的时间是否早于作业w2的时间。类似题目:比较两个学生,判断他们的成绩是否按指定规则排列。比较规则是:先比较总成绩,再比较数学成绩,再比较语文成绩。3.以Date类和Time类为基类,创建一个作业类Work,包括新增成员:int id;输入若干作业,每个作业占一行(作业id 年 月 日 时 分 秒)
2024-06-19 09:42:07
253
原创 cpp练习:Point_Array(类+构造+对象数组)
输出每组中距离最大的两个点以及其距离(存在多个距离都是最大值的情况下,输出下标排序最前的点组合。比如如果p[0]和p[9]、p[4]和p[5]之间的距离都是最大值,那么前一个是答案,因为p[0]排序最前)然后在主函数中根据用户输入的数目建立Point数组,求出数组内距离最大的两个点之间的距离值。2、将getDisTo方法的参数修改为getDisTo(const Point &p);3、根据输出的内容修改相应的构造函数。第一个点的 x 坐标 y坐标。第二个点的 x坐标 y坐标。1、增加自写的析构函数;
2024-04-14 14:01:23
293
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人