击键生成

时间:2009-01-23 12:43:42

标签: c algorithm

我有一个场景,我需要使用数字2到9生成所有可能的击键。可能的击键应该生成2-git,3-digit等最多32位数字。任何人都可以告诉我解决这个问题的最佳方法是什么。

谢谢, Pdit

3 个答案:

答案 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次额外的递归调用),但仍需要永远计算所有可能的组合。