【问题标题】:Why is backtracking unable to generate all possible combinations?为什么回溯无法生成所有可能的组合?
【发布时间】:2015-07-16 05:52:52
【问题描述】:

我有一个{{"x"},{"a","b","c"},{"1","2","3"}} 形式的二维数组。

我想生成以下所有组合:

xa1
xa2
xa3
xb1
xb2
xb3
xc1
xc2
xc3

我编写了以下递归代码来生成组合:

String dim[][] ={{"x"},{"a","b","c"},{"1","2","3"}};
void fun(int i,int j,String []metric)
{


    if(i>=dim.length)
    {
        for(int k=0;k<i;k++)
            System.out.print(metric[k]);    
        System.out.println();
        return;
    }

    if(j>=dim[i].length)
            return;
        metric[i] = dim[i][j];
    fun(i+1,j,metric);

    fun(i,j+1,metric);



}
public static void main (String[] args) throws java.lang.Exception
{
    // your code goes here
    String metric[] = new String[20];
    Ideone b = new Ideone();
    b.fun(0,0,metric);
}

我得到以下不完整的输出:

xa1
xa2
xa3
xb2
xb3
xc3

我无法生成所提到的所有组合,我无法弄清楚我的逻辑中缺少哪种情况/错误。

【问题讨论】:

    标签: java algorithm recursion multidimensional-array backtracking


    【解决方案1】:

    如果你替换它会起作用

    fun(i+1,j,metric);
    

    fun(i+1,0,metric);
    

    【讨论】:

    • 因为你应该遍历下一个数组的所有元素,而不仅仅是那些大于当前j值的元素。
    猜你喜欢
    • 2012-03-22
    • 1970-01-01
    • 2016-01-07
    • 2023-03-29
    • 2022-01-18
    相关资源
    最近更新 更多