定义
枚举算法是在分析问题时,逐个列举出所有可能情况,然后根据条件判断此答案是否合适,合适就保留,不合适就丢弃,最后得出一个结论。主要利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换区答案的全面性。
举例说明
有一个整数ABCD,一定是四位数,A不能为0,其中ABCD*4=DCBA。
其中A、B、C、D都是一个数字,求ABCD是多少?
如何解决这个问题呢?
我们可以直接枚举ABCD四个数的值
代码如下
#include <bits/stdc++.h>
using namespace std;
int main() {
for (int A = 0; A <= 9; A++) {
for (int B = 0; B <= 9; B++) {
for (int C = 0; C <= 9; C++) {
for (int D = 0; D <= 9; D++) {
if (A == 0) continue;
int s1 = A * 1000 + B * 100 + C * 10 + D;
int s2 = D * 1000 + C * 100 + B * 10 + A;
if (s1 * 4 == s2) printf("%d\n", s1);
}
}
}
}
return 0;
}
经过计算,答案为:2178
这种方法就是枚举,优点是直接了当,缺点是复杂度高。
我们可以做一个最简单优化,看最高位可知,D>=A*4,因此A只能取值1和2。
练习题目
DreamJudge 1348 百鸡问题
DreamJudge 1165 abc
DreamJudge 1274 Old Bill
登录后开始许愿
暂无评论,来抢沙发