已知:1、字符串由0~n(0<n<10)组成;
   2、字符串长度为m(0<m<10);
例如:n = 2; m = 3
要求编程循环输出以下结果:
0,1,2  00,01,02  10,11,12  20,21,22  000,001,002  010,011,012  020,021,022  100,101,102  110,111,112  120,121,122  200,201,202  210,211,212  220,221,222这问题搞的我头都疼了,望高手给点止痛药:-)

解决方案 »

  1.   

    不知道这样行不行没有测试过for(j=1;j<m;j++)
    {
     a(j);
    }
    a(k)
    {
      if(k==1)
        for(i=0;i<n;i++)
           System.Console.WriteLine(i.tostring()+",");
      elese
      for(d=0;d<n;d++)
      {
         System.Console.WriteLine(d.tostring());
         a(k);
      }
      
    }
      

  2.   

    笨办法:写10个循环,每个循环的重数分别为1到10(for(i=1;i++;i=n)),返回位数等于重数的数字串。然后判断m的值,取1~m重循环。
      

  3.   

    谢谢kiss_me提供一个思路,不过结果不太符合:
    0,1,2
    00,1,2
    10,1,2
    20,1,2
    000,1,2
    10,1,2
    20,1,2
    100,1,2
    10,1,2
    20,1,2
    200,1,2
    10,1,2
    20,1,2
      

  4.   

    To:hdt
    不是全排列,全排列中元素是不重复的
      

  5.   

    To:ruan_hg
    要是用循环,我就不用来问大家了:-)
      

  6.   

    0<n<10 ???
    为什么结果中有 0 出现
      

  7.   

    using System;
    using System.Collections.Generic;
    using System.Text;namespace Algorithm
    {
        class Program
        {
            static void Main(string[] args)
            {
                int n = 2, m = 3;            int loopCounter, temp, remainder;
                int curNum;
                string format = "0";            for (int i = 1; i <= m; ++i)
                {
                    temp = i;                format = "";
                    while (temp > 0)
                    {
                        format += "0";
                        temp--;
                    }                curNum = 0;                while (curNum.ToString().Length <= i)
                    {
                        Console.WriteLine(curNum.ToString(format));                    temp = curNum;
                        temp ++;
                        curNum = 0;
                        loopCounter = 0;
                        while (temp > 0)
                        {
                            remainder = temp % 10;
                            temp /= 10;
                            if (remainder > n)
                            {
                                remainder = 0;
                                temp++;
                            }                        curNum += (int)Math.Pow(10, loopCounter) * remainder;                        loopCounter++;
                        }
                    }
                }
            }
        }
    }