集训第二周:枚举,递归(萌新代码:洛谷P217和洛谷P1028.分别用枚举和递归做的)

本文介绍了枚举和递归的概念及在解决问题中的应用。枚举是一种穷举所有可能解的方法,适合于解法不易明确且解的数量有限的情况。递归则是通过函数自我调用来解决复杂问题,具有简洁的代码特点但可能消耗较多资源。举例说明了如何使用枚举解决洛谷P1217回文质数问题,以及递归在输出区间[1,10]整数和求和问题中的应用。" 83515353,7332016,Appium+Python实战:首次真机自动化测试,"['测试', 'Appium', '自动化测试', 'Python', '安卓']

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

南昌理工acm集训

枚举:

基本思想
枚举也叫穷举,它的基本思想是先依据题目的部分条件将所有可能解列举出来,然后用其余的条件对所有可能解进行一一验证,删去那些不符合条件的解,剩下符合条件的解就是整个问题的解。

适用范围:
*难以找到明确的公式和计算规则
*可能的解不是特别多
*在可接受的时间内解答

**枚举类型的定义:**枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。

**定义格式:**枚举类型的定义格式为:

enum <类型名> {
   
   <枚举常量表>};

格式说明:

*关键字enum——指明其后的标识符是一个枚举类型的名字。

*枚举常量表——由枚举常量构成。“枚举常量"或称"枚举成员”,是以标识符形式表示的整型量,表示枚举类型的取值。枚举常量表列出枚举类型的所有取值,各枚举常量之间以","间隔,且必须各不相同。取值类型与条件表达式相同。
比如:

enum color_set1 {
   
   RED, BLUE, WHITE, BLACK}; // 定义枚举类型color_set1
enum week {
   
   Sun, Mon, Tue, Wed, Thu, Fri, Sat}; // 定义枚举类型week

枚举常量代表该枚举类型的变量可能取的值,编译系统为每个枚举常量指定一个整数值,默认状态下,这个整数就是所列举元素的序号,序号从0开始。 可以在定义枚举类型时为部分或全部枚举常量指定整数值,在指定值之前的枚举常量仍按默认方式取值,而指定值之后的枚举常量按依次加1的原则取值。 各枚举常量的值可以重复。例如:

enum fruit_set {
   
   apple, orange, banana=1, peach, grape}
//枚举常量apple=0,orange=1, banana=1,peach=2,grape=3。
enum week {
   
   Sun=7, Mon=1, Tue, Wed, Thu, Fri, Sat};
//枚举常量Sun,Mon,Tue,Wed,Thu,Fri,Sat的值分别为7、1、2、3、4、5、6。

举一个可以用枚举做的水题吧
洛谷P1217 [USACO1.5]回文质数 Prime Palindromes
题目描述
因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。

写一个程序来找出范围a,b( 一亿)间的所有回文质数。

输入格式
第 1 行: 二个整数 a 和 b .

输出格式
输出一个回文质数的列表,一行一个。

输入输出样例
输入 #1复制
5 500
输出 #1复制
5
7
11
101
131
151
181
191
313
353
373
383
说明/提示
Hint 1: Generate the palindromes and see if they are prime.

提示 1: 找出所有的回文数再判断它们是不是质数(素数).

Hint 2: Generate palindromes by combining digits properly. You might need more than one of the loops like below.

提示 2: 要产生正确的回文数,你可能需要几个像下面这样的循环。

题目翻译来自NOCOW。

USACO Training Section 1.5

产生长度为5的回文数:

for (d1 = 1; d1 <= 9; d1+=2) {
   
       // 只有奇数才会是素数
     for (d2 = 0; d2 <= 9; d2++) {
   
   
         for (d3 = 0; d3 <= 9; d3++) {
   
   
           palindrome = 10000*d1 + 1000*d2 +100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值