如何遍历数字和字母的组合?
如果我要得到4位数字的所有组合则是0000---9999,但加上字母呢?

解决方案 »

  1.   

    程序如下, 不过输出的文本非常大, 因为数字加上大小写英文字母共62种, 那么输出的文本大小是:
    62 * 62 * 62 * 62 * 6(之所以乘六是因为一行输出一个组合, 还要加上回车换行符"\r\n") 
    = 88658016 字节class ConsoleTest
    {
        public static void Main()
        {
            // 假设需要的组合为数字加上大小写字母
            // 用0-9代表数字'0'-'9', 10 - 35 代表'A' - 'Z', 36 - 61 代表 'a' - 'z'
            int[] arrPermRep = new int[5];
            int i;
            string strPerm;
            System.IO.StreamWriter sw = new System.IO.StreamWriter("d://out.txt", false, System.Text.Encoding.Default);
            while (arrPermRep[4] == 0)
            {
                strPerm = "";
                for (i = 0; i < 4; ++ i)
                {
                    if (arrPermRep[i] < 10)
                    {
                        strPerm += (char)('0' + arrPermRep[i]);
                    }
                    else if (arrPermRep[i] < 36)
                    {
                        strPerm += (char)('A' + arrPermRep[i] - 10);
                    }
                    else
                    {
                        strPerm += (char)('a' + arrPermRep[i] - 36);
                    }
                }
                sw.WriteLine(strPerm);            arrPermRep[0] ++;
                i = 0;
                while (arrPermRep[i] == 62)
                {
                    arrPermRep[i] = 0;
                    arrPermRep[i + 1] ++;
                    i ++;
                }
            }
            sw.Close();
            Console.WriteLine("Output finished.");
        }
    }
      

  2.   

    其实用全排列算法即可,
    是0000-9999共10000个字符串与a-z 26个字母做全排列
    以前写过全排列得
    //strsorting 是要排序的字符串 如你的例子 "1","2","3" icurrent 是递归过程中处理到第几位
    等于strsorting 的长度即递归结束
    private void Sort(string[] strsorting,int icurrent)
    {if(icurrent==strsorting.Length)//处理结束输出      
       {
       foreach(string strprint in strsorting)
    {
    stroutput+=strprint+" ";
    }
    stroutput+='\n';
    return;
       }
        string strtemp;
    for(int icount=icurrent;icount<strsorting.Length;icount++)
    {
    {
    strtemp=strsorting[icount];
          strsorting[icount]=strsorting[icurrent];
          strsorting[icurrent]=strtemp;
          Sort(strsorting,icurrent+1);//递归
         strtemp=strsorting[icount];
        strsorting[icount]=strsorting[icurrent];
         strsorting[icurrent]=strtemp;
    }
    }
    调用 Sort(strsort,0);
    stroutput 是string类型的全局变量,是输出的字符串