精易论坛
标题: 枚举问题 [打印本页]
作者: cs潇潇 时间: 2024-1-6 13:25
标题: 枚举问题
一个8位数的密码,包含字母和数字,不是纯数字也不是纯字母,且最多只有相邻的两个位置字符相同。我们可以考虑两种情况:
字母和数字交替出现的情况:例如,"a1b2c3d4"。这种情况下,字母和数字的排列方式有 2^4 种(每个位置都有两种选择,字母或数字),相邻位置相同的情况有 7 种(8个位置减去1个不需要考虑的位置)。
连续两个相同字符的情况:例如,"a11b23c34"。这种情况下,我们可以选择一个字符,然后在后面的位置选择另一个字符,最后一个位置有 36 种选择(26个字母 + 10个数字),其他位置有 36 * 2 种选择(每个位置都可以是字母或数字)。所以,这种情况总共有 36 * 2 * 36 种可能。
将两种情况相加,即可得到总的可能性:
24×7+36×2×3624×7+36×2×36
计算结果为:
112+2592=2704112+2592=2704
所以,一个8位数的密码,满足题目条件的可能性有 2704 种。原理已经懂了,但是要怎么用代码把这2704种可能枚举出来呢?有没有简洁一点的写法
欢迎光临 精易论坛 (https://125.confly.eu.org/) |
Powered by Discuz! X3.4 |