首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >掷骰子的所有可能的排列

掷骰子的所有可能的排列
EN

Stack Overflow用户
提问于 2012-12-09 03:15:40
回答 5查看 3.8K关注 0票数 2

我想写一个模拟如下的程序:我有6个骰子,每次我都会掷一些骰子。

当我没有掷骰子的时候,我就假设我掷的是0。

我想列出我可以通过这种方式得到的所有可能的变体。下面是几个例子:

1,2,4,6,0,1

3,5,1,0,0,4

6,6,4,2,0,0等

你有什么建议吗?(我使用的是java,但我当然只对一般概念感兴趣。)

提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-12-09 03:27:37

你可以使用递归方法,跟踪深度:编辑,也许这个方法会更好:

代码语言:javascript
代码运行次数:0
运行
复制
class Main {
    public static void roll(String s, int depth) {
        if(depth == 0)
            System.out.println(s.substring(1));
        else
            for(int i = 0; i <= 6; i++)
                roll(s + "," + i, depth - 1);
    }
    public static void main(String[] args) {
        roll("", 6); //2nd parameter > 0
    }
}
票数 3
EN

Stack Overflow用户

发布于 2012-12-09 03:18:51

由于您特别要求“仅提供一般概念”,因此这里也有两种一般方法:

for循环使用6级嵌套的for循环,对0-6之间的所有可能的循环进行详尽的枚举(更多的使用1 for-

  • 来生成0-6之间的所有数字,并丢弃任何包含7, 8, 9的数字;然后使用一些格式化的填充和逗号打印数字(如果您不关心微小的效率差异,可以查看更干净的代码)
票数 3
EN

Stack Overflow用户

发布于 2012-12-09 03:28:59

为了优雅起见,我会编写一个递归方法,为给定的索引调用0-7循环,然后自身初始化下一个索引。

然后,它可以初始化一个数组或任意大小。

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

https://stackoverflow.com/questions/13780947

复制
相关文章

相似问题

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