数字的所有变体

时间:2018-09-17 14:31:40

标签: algorithm

我正在尝试查找数字形式的所有可能变体: '1_2_3_4',其中_是介于0到9之间的数字。 我想知道解决这个问题的最佳方法是什么。

3 个答案:

答案 0 :(得分:1)

这似乎是最简单的方法:

static void printPerms()
{
  int n = 1020304;
  for (int i = 0; i <= 9; i++, n += 90000)
    for (int j = 0; j <= 9; j++, n += 900)
      for (int k = 0; k <= 9; k++, n += 10)
        System.out.println(n);
}

甚至是这样,它具有可爱的对称性:

static void printPerms()
{
  int n = 1020304;
  for (int ni = n + 900000; n <= ni; n += 90000)
    for (int nj = n + 9000; n <= nj; n += 900)
      for (int nk = n + 90; n <= nk; n += 10)
        System.out.println(n);
}

答案 1 :(得分:0)

Python样式,假定使用ASCII码表示:

n= "1020304"
while True:
    n[5]+= 1
    if n[5] == ':':
        n[5]= '0'
        n[3]+= 1
        if n[3] == ':':
            n[3]= '0'
            n[1]+= 1
            if n[1] == ':'=
                break

答案 2 :(得分:0)

import java.util.*;
public class Solution {
    public static void main(String[] args){
        int[] fillable = {1,-1,2,-1,3,-1,4};
        for(int i=0;i<=9;++i){
            for(int j=0;j<=9;++j){
                for(int k=0;k<=9;++k){
                    fillable[1] = i;
                    fillable[3] = j;
                    fillable[5] = k;
                    System.out.println(Arrays.toString(fillable));
                }
            }
        }
    }
}

输出:

[1, 0, 2, 0, 3, 0, 4]
[1, 0, 2, 0, 3, 1, 4]
[1, 0, 2, 0, 3, 2, 4]
[1, 0, 2, 0, 3, 3, 4]
[1, 0, 2, 0, 3, 4, 4]
[1, 0, 2, 0, 3, 5, 4]
[1, 0, 2, 0, 3, 6, 4]
.
.
.
.

时间复杂度: O(10 ^ n),其中n为否。的位置。如果固定了3个空位置,则为O(1)

空间复杂度: O(1)

注意:没有没有更好的方法。您必须经历每种组合。

相关问题