我想写一个模拟如下的程序:我有6个骰子,每次我都会掷一些骰子。
当我没有掷骰子的时候,我就假设我掷的是0。
我想列出我可以通过这种方式得到的所有可能的变体。下面是几个例子:
1,2,4,6,0,1
3,5,1,0,0,4
6,6,4,2,0,0等
你有什么建议吗?(我使用的是java,但我当然只对一般概念感兴趣。)
提前谢谢。
发布于 2012-12-08 19:27:37
你可以使用递归方法,跟踪深度:编辑,也许这个方法会更好:
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
}
}
发布于 2012-12-08 19:18:51
由于您特别要求“仅提供一般概念”,因此这里也有两种一般方法:
for循环使用6级嵌套的for循环,对0-6
之间的所有可能的循环进行详尽的枚举(更多的使用1 for-
0-6
之间的所有数字,并丢弃任何包含7, 8, 9
的数字;然后使用一些格式化的填充和逗号打印数字(如果您不关心微小的效率差异,可以查看更干净的代码)发布于 2012-12-08 19:28:59
为了优雅起见,我会编写一个递归方法,为给定的索引调用0-7循环,然后自身初始化下一个索引。
然后,它可以初始化一个数组或任意大小。
https://stackoverflow.com/questions/13780947
复制相似问题