首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一种蛮力魔方算法摘录

一种蛮力魔方算法摘录
EN

Code Review用户
提问于 2016-07-15 04:20:56
回答 1查看 239关注 0票数 1

我有一个程序,该程序强制搜索用户输入的数组元素的组合,当程序搜索时,所有for循环都嵌套用于野蛮搜索,然后我有这个test(),它负责测试嵌套的for循环的所有可能组合,以找到程序用户输入的组合,无论代码是多么的冗余,这里是一个示例。

代码语言:javascript
复制
public static boolean test(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k){
    boolean result1 = true;


    if(a == 0){
        cube = turn_U(cube);
    }
    else if(a == 1){
        cube = turn_Ui(cube);
    }
    else if(a == 2){
        cube = turn_U2(cube);
    }
    else if(a == 3){
        cube = turn_L(cube);
    }
    else if(a == 4){
        cube = turn_Li(cube);
    }
    else if(a == 5){
        cube = turn_L2(cube);
    }
    else if(a == 6){
        cube = turn_F(cube);
    }
    else if(a == 7){
        cube = turn_Fi(cube);
    }
    else if(a == 8){
        cube = turn_F2(cube);
    }
    else if(a == 9){
        cube = turn_R(cube);
    }
    else if(a == 10){
        cube = turn_Ri(cube);
    }
    else if(a == 11){
        cube = turn_R2(cube);
    }
    else if(a == 12){
        cube = turn_B(cube);
    }
    else if(a == 13){
        cube = turn_Bi(cube);
    }
    else if(a == 14){
        cube = turn_B2(cube);
    }
    else if(a == 15){
        cube = turn_D(cube);
    }
    else if(a == 16){
        cube = turn_Di(cube);
    }
    else if(a == 17){
        cube = turn_D2(cube);
    }

这就是字母a到k的情况,我想知道如何缩短它,我有一个想法,我可以创建一个方法,根据test()中的字母选择一个转身方法,这样可以减少测试对该方法的11个调用,而不是所有这些重复调用。

EN

回答 1

Code Review用户

发布于 2016-07-15 04:54:36

您考虑过使用switch语句而不是一大堆if / else if吗?Java:switch语句

会是这样的:

代码语言:javascript
复制
switch (a) {
    case 0:
        cube = turn_U(cube);
        break;
    case 1:
        cube = turn_Ui(cube);
        break;
    case 2:
        cube = turn_U2(cube);
        break;
    // and so on...
    default:
        // you can write a default case here, akin to an `else` clause at the end, if you need to.
}

当然,这不是一个完整的解决方案,因为在没有看到您的其余代码的情况下,很难准确地判断出最佳解决方案是什么。至少应该足够简化if/else分支的长链。

附加参考:堆栈溢出上的为什么switchif

附加注意:请为这个方法中的东西想出更好的名称。命名方法test没有说明它正在测试什么或者为什么。通过a输入参数k没有说明这些参数是什么意思。result1同样模棱两可..。结果1什么?

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/134938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档