求教各位,如果用任意的五个数字(比如:1,2,3,4,5)生成可能生成的所有三位数,要实现这样的算法,该怎么写呀?!

解决方案 »

  1.   

    非常笨的办法
    int[] intArray = new int[] { 1, 2, 3, 4, 5 };
       for (int i = 0; i < 5; i++)
       {
           for (int j = 0; j < 5; j++)
               {
                    if (i == j)
                        continue;
                    for (int k = 0; k < 5; k++)
                    {
                        if (i == k || j == k)
                            continue;
                   Console.WriteLine(intArray[i] * 100 + intArray[j] * 10 +intArray[k]);                }
              }
         }
    Console.ReadKey();
      

  2.   

    int[] num = new int[] { 1, 2, 3, 4, 5 };            for (int i = 0; i < 5; i++)
                    for (int j = 0; j < 5; j++)
                        for (int k = 0; k < 5; k++)
                            Console.WriteLine(num[i].ToString() + num[j].ToString() + num[k].ToString());
      

  3.   

    123
    124
    125
    132
    134
    135
    142
    143
    145
    152
    153
    154
    213
    214
    215
    231
    234
    235
    241
    243
    245
    251
    253
    254
    312
    314
    315
    321
    324
    325
    341
    342
    345
    351
    352
    354
    412
    413
    415
    421
    423
    425
    431
    432
    435
    451
    452
    453
    512
    513
    514
    521
    523
    524
    531
    532
    534
    541
    542
    543//...
            public void Combination(string ANumbers, string APath, int ALen, int ACount)
            {
                if (ALen == ACount)
                {
                    richTextBox1.AppendText(APath + "\r\n");
                    return;
                }
                for (int i = 0; i < ANumbers.Length; i++)
                {
                    string vNumbers = ANumbers.Remove(i, 1);
                    Combination(vNumbers, APath + ANumbers.Substring(i, 1), ALen, ACount + 1);
                }
                return;
            }
            private void button3_Click(object sender, EventArgs e)
            {
                Combination("12345", "", 3, 0);
            }
      

  4.   

    //才发现后面的参数时多余的
            public void Combination(string ANumbers, string APath, int ALen)
            {
                if (APath.Length >= ALen)
                {
                    richTextBox1.AppendText(APath + "\r\n");
                    return;
                }
                for (int i = 0; i < ANumbers.Length; i++)
                {
                    string vNumbers = ANumbers.Remove(i, 1);
                    Combination(vNumbers, APath + ANumbers.Substring(i, 1), ALen);
                }
                return;
            }
            private void button3_Click(object sender, EventArgs e)
            {
                Combination("12345", "", 3);
            }
      

  5.   

    题目应该注明“挑出三个不重复的数字”
    不过,zswang(伴水清清)(专家门诊清洁工) 的递归算法设计的非常不错。