C# 1 2 3 3个数字 要出来 1 2 3 12 13 23 123

2025-05-08 21:17:06
推荐回答(4个)
回答1:

这是一个穷举算法,现在用手机上网,不方便写代码,等明天上电脑给你写!

不知道你这个是否只针对数字,是否需要排序!请补充条件! 

你补充的条件和你一开始问的两个算法不一样的,不知道你要那一种? 

 //数组列表测试

     string tmpStr = "123456";

     string LastStr = "";

     for (int i = 2; i < tmpStr.Length ; i++) 

       {

         LastStr+=ChangeToNewStr(tmpStr, i); 

       }

       MessageBox.Show(tmpStr + LastStr + tmpStr);

//ChangeNewStr("1234",2)返回12 13 14 23 24 34

string ChangeToNewStr(string tmpInStr, int GetStrLong)

  {

    string tmpLastStr="";

     for (int i = 0; i < tmpInStr.Length-GetStrLong+1 ; i++)

    {

       tmpLastStr += ChangeStr(tmpInStr.Substring(i, GetStrLong - 1), tmpInStr.Substring(i+GetStrLong - 1,tmpInStr.Length-i-GetStrLong+1));

     }

     return tmpLastStr;

   }

//ChangeStr("12","345"),返回 123,124,125

string ChangeStr(string HeadStr, string TunStr)

  {

    string tmpAAdStr="";

    for (int k = 0; k < TunStr.Length; k++)

    {

     tmpAAdStr += HeadStr + TunStr.Substring(k, 1);

    }

     return tmpAAdStr;

   }

注意,这里输出地是字符串,如果你输出字符数组的话,我建议你用ArrayList来实现,因为那样可以实现不定长,等最后的时候,可以在转换成字符数组。下面是用Arraylist的参考:

private   System.Collections.ArrayList myList=new System.Collections.ArrayList();

//数组列表测试

string tmpStr = "123456";

string LastStr = "";

   for (int j = 0; j < tmpStr.Length; j++)

     {

        myList.Add(tmpStr.Substring(j,1));

     }

   for (int i = 2; i < tmpStr.Length; i++)

     {

        LastStr += ChangeToNewStr(tmpStr, i);

      }

    myList.Add(tmpStr);

    //此时mylist里面保存的就是所有的字符串数组,可以转换

   for (int i = 0; i < myList.Count; i++)

      {

        listBox1.Items.Add(myList[i].ToString());

      }

 //ChangeNewStr("1234",2)返回12 13 14 23 24 34

string ChangeToNewStr(string tmpInStr, int GetStrLong)

   {

     string tmpLastStr="";

     for (int i = 0; i < tmpInStr.Length-GetStrLong+1 ; i++)

   {

     tmpLastStr += ChangeStr(tmpInStr.Substring(i, GetStrLong - 1), tmpInStr.Substring(i+GetStrLong - 1,tmpInStr.Length-i-GetStrLong+1));

     }

     return tmpLastStr;

    }

//ChangeStr("12","345"),返回 123,124,125

  string ChangeStr(string HeadStr, string TunStr)

    {

      string tmpAAdStr="";

      for (int k = 0; k < TunStr.Length; k++)

       {

        myList.Add(HeadStr + TunStr.Substring(k, 1));

        tmpAAdStr += HeadStr + TunStr.Substring(k, 1);

       }

        return tmpAAdStr;

     }

回答2:

这是一个穷举算法,现在用手机上网,不方便写代码,等明天上电脑给你写!
不知道你这个是否只针对数字,是否需要排序!请补充条件!

回答3:

123

回答4:

用递归算法