南昌理工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