为一组数字生成组合

3
在 C# 中,我希望生成由数字{1,2,3,4,5,6,7,8,9,0}组成的五位数的组合。因此,我希望得到的输出为11111、11112等,一直到99999。
当我进行搜索时,在控制台应用程序中使用 Combinations 总是会出现错误,我没有找到能够解决问题的任何内容。

3
在你提供的简单示例中,你根本不需要生成组合,你可以直接在一个数组或计数器中持有00000到99999,视情况而定。你实际使用的情况是否有不同的输入? - Anthony Pegram
你想生成一个列表的所有排列吗? - Andrew
任何答案有解决您的问题吗?如果有,您可以通过单击答案投票小部件下方的复选标记将其选择为答案。 - DiverseAndRemote.com
3个回答

7

做一个for循环,从11111数到99999:

for(int i = 11111; i<=99999; i++){
    var combination = i.ToString();
    Console.WriteLine(combination);
}

或者如果你想要00001到99999

for (int i = 0; i <= 99999; i++)
{
    var combination = String.Format("{0:D5}", i);
    Console.WriteLine(combination);
}

请注意,如果您要选择的值集合不仅限于数字0...9,则可以使用Convert.ToString()的重载版本,该版本接受一个基数,该基数为您要选择的项目数量。然后,您只需将for循环的结束条件改为x ^ y,其中X是您要选择的项目数量,Y是结果中的位数。 - Servy
谢谢!现在,我该如何逐个获取生成的每个值,并将其用作输入? - jonbon
每个单独的值都在 combination 变量中。 - DiverseAndRemote.com

2
如果你想要把数字组合在一起,而不是特定地获取一个序列,你可以使用 Linq 查询。
         var bob = new [] {1,2,3,4,5,6,7,8,9,0};
         var greg =
             from a in bob
             from b in bob
             from c in bob
             from d in bob
             from e in bob
             select string.Concat(a, b, c, d, e);

只有在编译时知道数组中项数才能这样做。 - Servy
不是的。数组可以动态构建,笛卡尔积可以随时构建。你可能认为它只适用于5个字符编译,这是正确的。 - Thinking Sites
正确的是,我想说这仅适用于输出大小固定的情况,而不是输入数组大小固定的情况。但通常情况下,这仍然是需要灵活处理的。 - Servy

2

从0到99999的简单计数将产生所有组合(如果您想要所有组合,确实应该从00000开始)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接