0
已采纳
李泽屿
新手启示者
新手启示者
枚举是把所有可能的情况都列举出来,逐一验证。
当我们要求证的问题,其所有可能的方案数在一个有限范围内时,我们就可以用枚举来解决这个问题。
枚举是解编程题常用且有效的一种手段,但在枚举时,也要注意以下几点:
- 多重循环的枚举很可能超时,应当尽可能优化、减少循环次数。
- 枚举虽然直接有效,但有些题并不能使用枚举解决,或者说不能单纯用枚举来解决,需要配合其他的优化算法。
0
李泽屿
新手启示者
新手启示者
对于一个正整数,如何统计这个整数由哪些数字组成呢?
我们需要用到桶。
因为每一位上的数字,范围都在0~9以内,所以可以定义一个桶数组a[10],将数字的每一位取出,用对应桶数组元素做标记,如输入一个3位数,判断这个3位数是否正好由1~3这3个数字构成:
int a[10]; //定义桶数组 int main(){ int n; cin>>n; //输入一个三位数 //取三位数的每一位,用桶做标记 a[n/100]++; a[n/10%10]++; a[n%10]++; bool f=true; for(int i=1;i<=3;i++){ //判断1,2,3是否都用到 if(a[i]==0){ f=false; break; } } if(f==true) cout<<n<<"恰好由1,2,3这3个数字构成"; else cout<<n<<"不是恰好由1,2,3这3个数字构成"; }
0