我有一个场景,我需要使用数字2到9生成所有可能的击键。可能的击键应该生成2-git,3-digit等最多32位数字。任何人都可以告诉我解决这个问题的最佳方法是什么。
谢谢, Pdit
答案 0 :(得分:6)
从一些简单的分析开始考虑可行性。一位数有8个可能的值。两个数字有8 x 8.等等。现在抓住你的计算器并计算8 ^ 32。
答案 1 :(得分:0)
你正在寻找更高端的计算。
一种可能的方法是将数组作为数字序列的占位符,递增最高或最低索引,检查它是否溢出然后将其“携带”到下一个索引并执行该操作直到你“溢出”另一端的情绪。从填充为2的数组开始。
答案 2 :(得分:0)
我采用简单的递归方法,这里有字符,但你也可以使用其他方法建立你的数字..
在C:
#include <stdio.h>
void keystrokes(int x, int lo, int hi, char array[]) {
int i;
if (x > hi)
return;
if (x >= lo) {
array[x] = 0;
printf ("%s\n", array);
}
for (i = 2; i < 10; i++) {
array[x] = i+'0';
keystrokes (x+1, lo, hi, array);
}
}
int main(void)
{
char array[33];
keystrokes(0, 2, 32, array);
return 0;
}
它可以进行一些优化(例如,对于所有32位数字,它仍然会进行10次额外的递归调用),但仍需要永远计算所有可能的组合。