qq_20077261
叉鸭脖
2015-12-24 05:39
采纳率: 80%
浏览 2.0k

C#怎么对4个数字做全排列并赋值给4个变量?

例如对已有的4个数字例如(1,2,3,4)做全排列并赋值给a1,a2,a3,a4?
对每个a1,a2,a3,a4的情况都要做一些操作的,就是想不明白怎么用循环之类的得出那4个变量的24种不同的情况

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • yangbo50304
    yangbo50304 2015-12-24 05:57
    已采纳

    是这个意思么?

     int[] array = {1, 2, 3, 4};
                int iCount = 0;
                for (int i1 = 0; i1 < 4; i1++)
                {
                    for (int i2 = 0; i2 < 4; i2++)
                    {
                        if (i2 == i1)
                        {
                            continue;
                        }
    
                        for (int i3 = 0; i3 < 4; i3++)
                        {
                            if (i3 == i1 || i3 == i2)
                            {
                                continue;
                            }
    
                            for (int i4 = 0; i4 < 4; i4++)
                            {
                                if (i4 == i1 || i4 == i2 || i4 == i3)
                                {
                                    continue;
                                }
                                iCount++;
                                Console.WriteLine("{0}-{1}-{2}-{3}", i1, i2, i3, i4);
                            }
                        }
                    }
                }
    
                Console.WriteLine("AllCount == {0}", iCount);
                Console.ReadKey();
    
    点赞 评论
  • yangbo50304
    yangbo50304 2015-12-24 06:04
      int[] array = {1, 2, 3, 4};
                int a1, a2, a3, a4;
                int iCount = 0;
                for (int i1 = 0; i1 < array.Length; i1++)
                {
                    for (int i2 = 0; i2 < array.Length; i2++)
                    {
                        if (i2 == i1)
                        {
                            continue;
                        }
    
                        for (int i3 = 0; i3 < array.Length; i3++)
                        {
                            if (i3 == i1 || i3 == i2)
                            {
                                continue;
                            }
    
                            for (int i4 = 0; i4 < array.Length; i4++)
                            {
                                if (i4 == i1 || i4 == i2 || i4 == i3)
                                {
                                    continue;
                                }
                                a1 = array[i1];
                                a2 = array[i2];
                                a3 = array[i3];
                                a4 = array[i4];
                                iCount++;
                                Console.WriteLine("{0}-{1}-{2}-{3}", a1, a2, a3, a4);
                            }
                        }
                    }
                }
    
                Console.WriteLine("AllCount == {0}", iCount);
                Console.ReadKey();
            }
    
    点赞 评论
  • John_ToString
    John_ToString 2015-12-24 09:19

    你去百度一下全排列算法,直接用一下内部实现赋值不就行了。你的问题在算法是吧

    点赞 评论
  • herozhangbz
    herozhangbz 2015-12-24 09:35
    点赞 评论
  • Dongle_74
    Dongle_Kevin 2015-12-25 09:09

    也可以利用数组排列的方式来进行吧,没变动一次就记录组合,去掉相同排列就行,不过比较麻烦

    点赞 评论

相关推荐