请教用1,2,3,4,5 输出三位数字组合

时间:2022-04-11 11:40:39
请教排列组合的算法,输出各种组合:
有数字 1,2,3,4,5 五个数字,每次输出三位数字组合,每个数字均可重复使用,但输出的结果不能重复。
结果如: 142,155,123,514........
这个怎么写啊,谢谢

18 个解决方案

#1


把12345当做一个数组 for循环取数据

#2


List<string> list = new List<string>();
            int i = 1;
            while (i <= 5)
            {
                int j = i;
                while (j <= 5)
                {
                    int k = j;
                    while (k <= 5)
                    {
                        string value = i.ToString() + j.ToString() + k.ToString();
                        if (!list.Contains(value))
                        {
                            list.Add(value);
                            Console.WriteLine();
                        }
                    }
                }
            }

#3


Console.WriteLine(); 
==>
 Console.WriteLine(value); 

#4



                 学习中~~~~~~~~~~~~~~~~~~

#5


ArrayList al = new ArrayList();
for(int i = 1; i < 6; i ++){
 for(int j = 1; j < 6; j ++){
  for(int k = 1; k < 6; k ++){
     al.add(i.toString() + j.toString() + k.toString())
  }
 }
}

#6


for (int i = 1; i < 6; i++)
    for (int j = 1; j < 6; j++)
        for (int k = 1; k < 6; k++)
            Console.WriteLine("{0}{1}{2}", i, j, k);

#7


真有用3 个FOR的 NB 人,3只是一个数字,它要想像成N的 好吧

#8


LS你太逗了吧  请教用1,2,3,4,5 输出三位数字组合

#9


引用 7 楼 liaoyukun111 的回复:
真有用3 个FOR的 NB 人,3只是一个数字,它要想像成N的 好吧

别人要的是思路 请教用1,2,3,4,5 输出三位数字组合

#10


只是给你是简单的实现方法.
如果是N那你肯定要考虑提个方法出来.或者寻找更好的方法.

#11


引用 2 楼 xray2005 的回复:
List <string> list = new List <string>();
            int i = 1;
            while (i <= 5)
            {
                int j = i;
                while (j <= 5)
                {
                    int k = j;
                    while (k <= 5)
                    {
                        string value = i.ToString() + j.ToString() + k.ToString();
                        if (!list.Contains(value))
                        {
                            list.Add(value);
                            Console.WriteLine();
                        }
                    }
                }
            }

支持这个

#12


引用 7 楼 liaoyukun111 的回复:
真有用3 个FOR的 NB 人,3只是一个数字,它要想像成N的 好吧


杀鸡焉用牛刀?

#13


3层循环                         
.

#14


int[] a = { 1,2,3,4,5};
        int[] b = { 1, 2, 3, 4, 5 };
        int[] c = { 1, 2, 3, 4, 5 };

        foreach (int i in a)
        {
            foreach (int j in b)
            {
                foreach (int k in c)
                {
                    Console.WriteLine(i.ToString() + j.ToString() + k.ToString());
                }
            }
        }

#15


 List<string> list = new List<string>();

        for (int i = 1; i <= 5; i++)
        {
            list.Add(i.ToString()+i.ToString()+i.ToString());

            for (int j = i + 1; j <= 5; j++)
            {
                for (int k = 1; k <= 5; k++)
                {
                    string num1 = i.ToString() + j.ToString() + k.ToString();
                    list.Add(i.ToString() + j.ToString() + k.ToString());
                    list.Add(num1.ToCharArray().Reverse().ToString());

                    string num2 = i.ToString() + k.ToString() + j.ToString();
                    list.Add(i.ToString() + k.ToString() + j.ToString());
                    list.Add(num2.ToCharArray().Reverse().ToString());

                    string num3 = k.ToString() + i.ToString() + j.ToString();
                    list.Add(k.ToString() + i.ToString() + j.ToString());
                    list.Add(num3.ToCharArray().Reverse().ToString());
                }
            }
        }

我的也是循环 不过有点区别

第一类是:111,222,333~~
第二类是:五个选二个不重复  然后再从五个数中选一个出来插入三个位子,比如:(3)12,1(3)2,12(3), 然后将这三个数反序

主要是减少循环次数,

#16


我错了,,晕。。。献丑

#17


学习中~~~~~~~~~~~~~~~~~~

#18



string[] strs ={ "1", "2", "3", "4", "5" };
            List<string> list = new List<string>();
            int i = 0;
            while (i < strs.Length)
            {
                int j = 0;
                while (j < strs.Length)
                {
                    int k = 0;
                    while (k < strs.Length)
                    {
                        string value = strs[i] + strs[j] + strs[k];
                        if (!list.Contains(value))
                        {
                            list.Add(value);
                            k++;
                        }
                    }
                    j++;
                }
                i++;
            }

#1


把12345当做一个数组 for循环取数据

#2


List<string> list = new List<string>();
            int i = 1;
            while (i <= 5)
            {
                int j = i;
                while (j <= 5)
                {
                    int k = j;
                    while (k <= 5)
                    {
                        string value = i.ToString() + j.ToString() + k.ToString();
                        if (!list.Contains(value))
                        {
                            list.Add(value);
                            Console.WriteLine();
                        }
                    }
                }
            }

#3


Console.WriteLine(); 
==>
 Console.WriteLine(value); 

#4



                 学习中~~~~~~~~~~~~~~~~~~

#5


ArrayList al = new ArrayList();
for(int i = 1; i < 6; i ++){
 for(int j = 1; j < 6; j ++){
  for(int k = 1; k < 6; k ++){
     al.add(i.toString() + j.toString() + k.toString())
  }
 }
}

#6


for (int i = 1; i < 6; i++)
    for (int j = 1; j < 6; j++)
        for (int k = 1; k < 6; k++)
            Console.WriteLine("{0}{1}{2}", i, j, k);

#7


真有用3 个FOR的 NB 人,3只是一个数字,它要想像成N的 好吧

#8


LS你太逗了吧  请教用1,2,3,4,5 输出三位数字组合

#9


引用 7 楼 liaoyukun111 的回复:
真有用3 个FOR的 NB 人,3只是一个数字,它要想像成N的 好吧

别人要的是思路 请教用1,2,3,4,5 输出三位数字组合

#10


只是给你是简单的实现方法.
如果是N那你肯定要考虑提个方法出来.或者寻找更好的方法.

#11


引用 2 楼 xray2005 的回复:
List <string> list = new List <string>();
            int i = 1;
            while (i <= 5)
            {
                int j = i;
                while (j <= 5)
                {
                    int k = j;
                    while (k <= 5)
                    {
                        string value = i.ToString() + j.ToString() + k.ToString();
                        if (!list.Contains(value))
                        {
                            list.Add(value);
                            Console.WriteLine();
                        }
                    }
                }
            }

支持这个

#12


引用 7 楼 liaoyukun111 的回复:
真有用3 个FOR的 NB 人,3只是一个数字,它要想像成N的 好吧


杀鸡焉用牛刀?

#13


3层循环                         
.

#14


int[] a = { 1,2,3,4,5};
        int[] b = { 1, 2, 3, 4, 5 };
        int[] c = { 1, 2, 3, 4, 5 };

        foreach (int i in a)
        {
            foreach (int j in b)
            {
                foreach (int k in c)
                {
                    Console.WriteLine(i.ToString() + j.ToString() + k.ToString());
                }
            }
        }

#15


 List<string> list = new List<string>();

        for (int i = 1; i <= 5; i++)
        {
            list.Add(i.ToString()+i.ToString()+i.ToString());

            for (int j = i + 1; j <= 5; j++)
            {
                for (int k = 1; k <= 5; k++)
                {
                    string num1 = i.ToString() + j.ToString() + k.ToString();
                    list.Add(i.ToString() + j.ToString() + k.ToString());
                    list.Add(num1.ToCharArray().Reverse().ToString());

                    string num2 = i.ToString() + k.ToString() + j.ToString();
                    list.Add(i.ToString() + k.ToString() + j.ToString());
                    list.Add(num2.ToCharArray().Reverse().ToString());

                    string num3 = k.ToString() + i.ToString() + j.ToString();
                    list.Add(k.ToString() + i.ToString() + j.ToString());
                    list.Add(num3.ToCharArray().Reverse().ToString());
                }
            }
        }

我的也是循环 不过有点区别

第一类是:111,222,333~~
第二类是:五个选二个不重复  然后再从五个数中选一个出来插入三个位子,比如:(3)12,1(3)2,12(3), 然后将这三个数反序

主要是减少循环次数,

#16


我错了,,晕。。。献丑

#17


学习中~~~~~~~~~~~~~~~~~~

#18



string[] strs ={ "1", "2", "3", "4", "5" };
            List<string> list = new List<string>();
            int i = 0;
            while (i < strs.Length)
            {
                int j = 0;
                while (j < strs.Length)
                {
                    int k = 0;
                    while (k < strs.Length)
                    {
                        string value = strs[i] + strs[j] + strs[k];
                        if (!list.Contains(value))
                        {
                            list.Add(value);
                            k++;
                        }
                    }
                    j++;
                }
                i++;
            }