经典枚举mooc例题C++

本文总结了两个使用C++通过枚举方法解决的经典编程问题:生理周期与称硬币。生理周期问题中,寻找三个生理周期(23天、28天、33天)下一次同时达到高峰的日期;称硬币问题中,通过三次天平称量找出12枚硬币中重量不同的那枚并判断其轻重。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

枚举小结

生理周期

题目描述

人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为 23 天、28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。

对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。你的任务是给定一个从当年第一天开始数的天数,输出从给定时间开始(不包括给定时间)下一次三个高峰落在同一天的时间(距给定时间的天数)。例如:给定时间为10,下次出现三个高峰同天的时间是12,则输出2。

输入样式

0 0 0 0
0 0 0 100
5 20 34 325
4 5 6 7
283 102 23 320
-1 -1 -1 -1

输出样式

Case 1: the next triple peak occurs in 21252 days.
Case 2: the next triple peak occurs in 21152 days.
Case 3: the next triple peak occurs in 19575 days.
Case 4: the next triple peak occurs in 16994 days.
Case 5: the next triple peak occurs in 8910 days.

题目思路

假设从当年的第一天开始数,第k 天时三个高峰同时出现。符合问题要求的k必须大于d、小于等于21252(23×28×33),并满足下列三个条件:
1)(k-p) % 23 == 0
2)(k-e) % 28 == 0
3)(k-i) % 33 == 0
对区间[d+1,21252]中的每个k都进行三个条件的判断,若同时满足三个条件,则k就是所求。这题利用枚举来跳出循环,找到最先的三者高峰期。

代码

#include <stdio.h>

int main()

{
   
   

    int p,e,i,d,case = 0
### 南京邮电大学 C++ 编程 MOOC 课程资源 南京邮电大学提供了丰富的C++编程在线开放课程(MOOC),这些课程涵盖了从基础到高级的各种主题,适合不层次的学习者。以下是关于该学校C++编程MOOC的一些具体信息: #### 课程特点 - **全面覆盖知识点**:课程内容不仅限于基本语法介绍,还包括面向对象编程、模板、异常处理等多个重要方面[^1]。 - **实践导向的教学方式**:通过大量实例练习来加深理解,如实现教师与研究生信息管理系统的简化版本,以及基于模板的通用搜索算法开发[^2]。 #### 学习材料 - **代码示例详尽**:提供完整的代码片段帮助学生更好地掌握概念和技术细节。例如,在讲解如何创建和操作矩阵时给出了详细的构造函数、复制赋运算符重载等方面的指导[^3]。 ```cpp #include <iostream> using namespace std; class Matrix { private: int row, col; double *data; // 动态分配内存存储矩阵元素 public: Matrix(int r = 0, int c = 0): row(r), col(c){ data = new double[row * col]; } ~Matrix(){ delete[] data; } bool operator=(const Matrix &other); }; ``` - **项目驱动型学习体验**:鼓励学员完成具有一定挑战性的期末项目,像构建一个简单的三维图形库,其中涉及继承机制的应用——由矩形类派生出长方体类,并实现了体积计算等功能[^5]。 #### 辅助工具和支持服务 除了上述正式授课资料外,还设有专门的技术支持论坛供学生们交流讨论遇到的问题;时也会定期更新一些额外的学习指南文档,比如有关圆柱几何属性求解的小教程等[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值