[code=BatchFile]A,B,C,D=====
AA,AB,AC,AD,BA,BB,BC,BD,CA,CB,CC,CD,DA,DB,DC,DD=====
AAA,AAB,AAC,AAD,ABA,ABB,ABC,ABD,ACA,ACB,ACC,ACD,ADA,ADB,ADC,ADD,BAA,BAB,BAC,BAD
,BBA,BBB,BBC,BBD,BCA,BCB,BCC,BCD,BDA,BDB,BDC,BDD,CAA,CAB,CAC,CAD,CBA,CBB,CBC,CBD
,CCA,CCB,CCC,CCD,CDA,CDB,CDC,CDD,DAA,DAB,DAC,DAD,DBA,DBB,DBC,DBD,DCA,DCB,DCC,DCD
,DDA,DDB,DDC,DDD=====
AAAA,AAAB,AAAC,AAAD,AABA,AABB,AABC,AABD,AACA,AACB,AACC,AACD,AADA,AADB,AADC,AADD
,ABAA,ABAB,ABAC,ABAD,ABBA,ABBB,ABBC,ABBD,ABCA,ABCB,ABCC,ABCD,ABDA,ABDB,ABDC,ABDD
,ACAA,ACAB,ACAC,ACAD,ACBA,ACBB,ACBC,ACBD,ACCA,ACCB,ACCC,ACCD,ACDA,ACDB,ACDC,ACDD
,ADAA,ADAB,ADAC,ADAD,ADBA,ADBB,ADBC,ADBD,ADCA,ADCB,ADCC,ADCD,ADDA,ADDB,ADDC,ADDD
,BAAA,BAAB,BAAC,BAAD,BABA,BABB,BABC,BABD,BACA,BACB,BACC,BACD,BADA,BADB,BADC,BADD
,BBAA,BBAB,BBAC,BBAD,BBBA,BBBB,BBBC,BBBD,BBCA,BBCB,BBCC,BBCD,BBDA,BBDB,BBDC,BBDD
,BCAA,BCAB,BCAC,BCAD,BCBA,BCBB,BCBC,BCBD,BCCA,BCCB,BCCC,BCCD,BCDA,BCDB,BCDC,BCDD
,BDAA,BDAB,BDAC,BDAD,BDBA,BDBB,BDBC,BDBD,BDCA,BDCB,BDCC,BDCD,BDDA,BDDB,BDDC,BDDD
,CAAA,CAAB,CAAC,CAAD,CABA,CABB,CABC,CABD,CACA,CACB,CACC,CACD,CADA,CADB,CADC,CADD
,CBAA,CBAB,CBAC,CBAD,CBBA,CBBB,CBBC,CBBD,CBCA,CBCB,CBCC,CBCD,CBDA,CBDB,CBDC,CBDD
,CCAA,CCAB,CCAC,CCAD,CCBA,CCBB,CCBC,CCBD,CCCA,CCCB,CCCC,CCCD,CCDA,CCDB,CCDC,CCDD
,CDAA,CDAB,CDAC,CDAD,CDBA,CDBB,CDBC,CDBD,CDCA,CDCB,CDCC,CDCD,CDDA,CDDB,CDDC,CDDD
,DAAA,DAAB,DAAC,DAAD,DABA,DABB,DABC,DABD,DACA,DACB,DACC,DACD,DADA,DADB,DADC,DADD
,DBAA,DBAB,DBAC,DBAD,DBBA,DBBB,DBBC,DBBD,DBCA,DBCB,DBCC,DBCD,DBDA,DBDB,DBDC,DBDD
,DCAA,DCAB,DCAC,DCAD,DCBA,DCBB,DCBC,DCBD,DCCA,DCCB,DCCC,DCCD,DCDA,DCDB,DCDC,DCDD
,DDAA,DDAB,DDAC,DDAD,DDBA,DDBB,DDBC,DDBD,DDCA,DDCB,DDCC,DDCD,DDDA,DDDB,DDDC,DDDD=====
AAAAA,AAAAB,AAAAC,AAAAD,AAABA,AAABB,AAABC,AAABD,AAACA,AAACB,AAACC,AAACD,AAADA,AAADB
,AAADC,AAADD,AABAA,AABAB,AABAC,AABAD,AABBA,AABBB,AABBC,AABBD,AABCA,AABCB,AABCC,AABCD
,AABDA,AABDB,AABDC,AABDD,AACAA,AACAB,AACAC,AACAD,AACBA,AACBB,AACBC,AACBD,AACCA,AACCB
,AACCC,AACCD,AACDA,AACDB,AACDC,AACDD,AADAA,AADAB,AADAC,AADAD,AADBA,AADBB,AADBC,AADBD
,AADCA,AADCB,AADCC,AADCD,AADDA,AADDB,AADDC,AADDD,ABAAA,ABAAB,ABAAC,ABAAD,ABABA,ABABB
,ABABC,ABABD,ABACA,ABACB,ABACC,ABACD,ABADA,ABADB,ABADC,ABADD,ABBAA,ABBAB,ABBAC,ABBAD
,ABBBA,ABBBB,ABBBC,ABBBD,ABBCA,ABBCB,ABBCC,ABBCD,ABBDA,ABBDB,ABBDC,ABBDD,ABCAA,ABCAB
,ABCAC,ABCAD,ABCBA,ABCBB,ABCBC,ABCBD,ABCCA,ABCCB,ABCCC,ABCCD,ABCDA,ABCDB,ABCDC,ABCDD
,ABDAA,ABDAB,ABDAC,ABDAD,ABDBA,ABDBB,ABDBC,ABDBD,ABDCA,ABDCB,ABDCC,ABDCD,ABDDA,ABDDB
,ABDDC,ABDDD,ACAAA,ACAAB,ACAAC,ACAAD,ACABA,ACABB,ACABC,ACABD,ACACA,ACACB,ACACC,ACACD
,ACADA,ACADB,ACADC,ACADD,ACBAA,ACBAB,ACBAC,ACBAD,ACBBA,ACBBB,ACBBC,ACBBD,ACBCA,ACBCB
,ACBCC,ACBCD,ACBDA,ACBDB,ACBDC,ACBDD,ACCAA,ACCAB,ACCAC,ACCAD,ACCBA,ACCBB,ACCBC,ACCBD
,ACCCA,ACCCB,ACCCC,ACCCD,ACCDA,ACCDB,ACCDC,ACCDD,ACDAA,ACDAB,ACDAC,ACDAD,ACDBA,ACDBB
,ACDBC,ACDBD,ACDCA,ACDCB,ACDCC,ACDCD,ACDDA,ACDDB,ACDDC,ACDDD,ADAAA,ADAAB,ADAAC,ADAAD
,ADABA,ADABB,ADABC,ADABD,ADACA,ADACB,ADACC,ADACD,ADADA,ADADB,ADADC,ADADD,ADBAA,ADBAB
,ADBAC,ADBAD,ADBBA,ADBBB,ADBBC,ADBBD,ADBCA,ADBCB,ADBCC,ADBCD,ADBDA,ADBDB,ADBDC,ADBDD
,ADCAA,ADCAB,ADCAC,ADCAD,ADCBA,ADCBB,ADCBC,ADCBD,ADCCA,ADCCB,ADCCC,ADCCD,ADCDA,ADCDB
,ADCDC,ADCDD,ADDAA,ADDAB,ADDAC,ADDAD,ADDBA,ADDBB,ADDBC,ADDBD,ADDCA,ADDCB,ADDCC,ADDCD
,ADDDA,ADDDB,ADDDC,ADDDD,BAAAA,BAAAB,BAAAC,BAAAD,BAABA,BAABB,BAABC,BAABD,BAACA,BAACB
,BAACC,BAACD,BAADA,BAADB,BAADC,BAADD,BABAA,BABAB,BABAC,BABAD,BABBA,BABBB,BABBC,BABBD
,BABCA,BABCB,BABCC,BABCD,BABDA,BABDB,BABDC,BABDD,BACAA,BACAB,BACAC,BACAD,BACBA,BACBB
,BACBC,BACBD,BACCA,BACCB,BACCC,BACCD,BACDA,BACDB,BACDC,BACDD,BADAA,BADAB,BADAC,BADAD
,BADBA,BADBB,BADBC,BADBD,BADCA,BADCB,BADCC,BADCD,BADDA,BADDB,BADDC,BADDD,BBAAA,BBAAB
,BBAAC,BBAAD,BBABA,BBABB,BBABC,BBABD,BBACA,BBACB,BBACC,BBACD,BBADA,BBADB,BBADC,BBADD
,BBBAA,BBBAB,BBBAC,BBBAD,BBBBA,BBBBB,BBBBC,BBBBD,BBBCA,BBBCB,BBBCC,BBBCD,BBBDA,BBBDB
,BBBDC,BBBDD,BBCAA,BBCAB,BBCAC,BBCAD,BBCBA,BBCBB,BBCBC,BBCBD,BBCCA,BBCCB,BBCCC,BBCCD
,BBCDA,BBCDB,BBCDC,BBCDD,BBDAA,BBDAB,BBDAC,BBDAD,BBDBA,BBDBB,BBDBC,BBDBD,BBDCA,BBDCB
,BBDCC,BBDCD,BBDDA,BBDDB,BBDDC,BBDDD,BCAAA,BCAAB,BCAAC,BCAAD,BCABA,BCABB,BCABC,BCABD
,BCACA,BCACB,BCACC,BCACD,BCADA,BCADB,BCADC,BCADD,BCBAA,BCBAB,BCBAC,BCBAD,BCBBA,BCBBB
,BCBBC,BCBBD,BCBCA,BCBCB,BCBCC,BCBCD,BCBDA,BCBDB,BCBDC,BCBDD,BCCAA,BCCAB,BCCAC,BCCAD
,BCCBA,BCCBB,BCCBC,BCCBD,BCCCA,BCCCB,BCCCC,BCCCD,BCCDA,BCCDB,BCCDC,BCCDD,BCDAA,BCDAB
,BCDAC,BCDAD,BCDBA,BCDBB,BCDBC,BCDBD,BCDCA,BCDCB,BCDCC,BCDCD,BCDDA,BCDDB,BCDDC,BCDDD
,BDAAA,BDAAB,BDAAC,BDAAD,BDABA,BDABB,BDABC,BDABD,BDACA,BDACB,BDACC,BDACD,BDADA,BDADB
,BDADC,BDADD,BDBAA,BDBAB,BDBAC,BDBAD,BDBBA,BDBBB,BDBBC,BDBBD,BDBCA,BDBCB,BDBCC,BDBCD
,BDBDA,BDBDB,BDBDC,BDBDD,BDCAA,BDCAB,BDCAC,BDCAD,BDCBA,BDCBB,BDCBC,BDCBD,BDCCA,BDCCB
,BDCCC,BDCCD,BDCDA,BDCDB,BDCDC,BDCDD,BDDAA,BDDAB,BDDAC,BDDAD,BDDBA,BDDBB,BDDBC,BDDBD
,BDDCA,BDDCB,BDDCC,BDDCD,BDDDA,BDDDB,BDDDC,BDDDD,CAAAA,CAAAB,CAAAC,CAAAD,CAABA,CAABB
,CAABC,CAABD,CAACA,CAACB,CAACC,CAACD,CAADA,CAADB,CAADC,CAADD,CABAA,CABAB,CABAC,CABAD
,CABBA,CABBB,CABBC,CABBD,CABCA,CABCB,CABCC,CABCD,CABDA,CABDB,CABDC,CABDD,CACAA,CACAB
,CACAC,CACAD,CACBA,CACBB,CACBC,CACBD,CACCA,CACCB,CACCC,CACCD,CACDA,CACDB,CACDC,CACDD
,CADAA,CADAB,CADAC,CADAD,CADBA,CADBB,CADBC,CADBD,CADCA,CADCB,CADCC,CADCD,CADDA,CADDB
,CADDC,CADDD,CBAAA,CBAAB,CBAAC,CBAAD,CBABA,CBABB,CBABC,CBABD,CBACA,CBACB,CBACC,CBACD
,CBADA,CBADB,CBADC,CBADD,CBBAA,CBBAB,CBBAC,CBBAD,CBBBA,CBBBB,CBBBC,CBBBD,CBBCA,CBBCB
,CBBCC,CBBCD,CBBDA,CBBDB,CBBDC,CBBDD,CBCAA,CBCAB,CBCAC,CBCAD,CBCBA,CBCBB,CBCBC,CBCBD
,CBCCA,CBCCB,CBCCC,CBCCD,CBCDA,CBCDB,CBCDC,CBCDD,CBDAA,CBDAB,CBDAC,CBDAD,CBDBA,CBDBB
,CBDBC,CBDBD,CBDCA,CBDCB,CBDCC,CBDCD,CBDDA,CBDDB,CBDDC,CBDDD,CCAAA,CCAAB,CCAAC,CCAAD
,CCABA,CCABB,CCABC,CCABD,CCACA,CCACB,CCACC,CCACD,CCADA,CCADB,CCADC,CCADD,CCBAA,CCBAB
,CCBAC,CCBAD,CCBBA,CCBBB,CCBBC,CCBBD,CCBCA,CCBCB,CCBCC,CCBCD,CCBDA,CCBDB,CCBDC,CCBDD
,CCCAA,CCCAB,CCCAC,CCCAD,CCCBA,CCCBB,CCCBC,CCCBD,CCCCA,CCCCB,CCCCC,CCCCD,CCCDA,CCCDB
,CCCDC,CCCDD,CCDAA,CCDAB,CCDAC,CCDAD,CCDBA,CCDBB,CCDBC,CCDBD,CCDCA,CCDCB,CCDCC,CCDCD
,CCDDA,CCDDB,CCDDC,CCDDD,CDAAA,CDAAB,CDAAC,CDAAD,CDABA,CDABB,CDABC,CDABD,CDACA,CDACB
,CDACC,CDACD,CDADA,CDADB,CDADC,CDADD,CDBAA,CDBAB,CDBAC,CDBAD,CDBBA,CDBBB,CDBBC,CDBBD
,CDBCA,CDBCB,CDBCC,CDBCD,CDBDA,CDBDB,CDBDC,CDBDD,CDCAA,CDCAB,CDCAC,CDCAD,CDCBA,CDCBB
,CDCBC,CDCBD,CDCCA,CDCCB,CDCCC,CDCCD,CDCDA,CDCDB,CDCDC,CDCDD,CDDAA,CDDAB,CDDAC,CDDAD
,CDDBA,CDDBB,CDDBC,CDDBD,CDDCA,CDDCB,CDDCC,CDDCD,CDDDA,CDDDB,CDDDC,CDDDD,DAAAA,DAAAB
,DAAAC,DAAAD,DAABA,DAABB,DAABC,DAABD,DAACA,DAACB,DAACC,DAACD,DAADA,DAADB,DAADC,DAADD
,DABAA,DABAB,DABAC,DABAD,DABBA,DABBB,DABBC,DABBD,DABCA,DABCB,DABCC,DABCD,DABDA,DABDB
,DABDC,DABDD,DACAA,DACAB,DACAC,DACAD,DACBA,DACBB,DACBC,DACBD,DACCA,DACCB,DACCC,DACCD
,DACDA,DACDB,DACDC,DACDD,DADAA,DADAB,DADAC,DADAD,DADBA,DADBB,DADBC,DADBD,DADCA,DADCB
,DADCC,DADCD,DADDA,DADDB,DADDC,DADDD,DBAAA,DBAAB,DBAAC,DBAAD,DBABA,DBABB,DBABC,DBABD
,DBACA,DBACB,DBACC,DBACD,DBADA,DBADB,DBADC,DBADD,DBBAA,DBBAB,DBBAC,DBBAD,DBBBA,DBBBB
,DBBBC,DBBBD,DBBCA,DBBCB,DBBCC,DBBCD,DBBDA,DBBDB,DBBDC,DBBDD,DBCAA,DBCAB,DBCAC,DBCAD
,DBCBA,DBCBB,DBCBC,DBCBD,DBCCA,DBCCB,DBCCC,DBCCD,DBCDA,DBCDB,DBCDC,DBCDD,DBDAA,DBDAB
,DBDAC,DBDAD,DBDBA,DBDBB,DBDBC,DBDBD,DBDCA,DBDCB,DBDCC,DBDCD,DBDDA,DBDDB,DBDDC,DBDDD,DCAAA,DCAAB,DCAAC,DCAAD,DCABA,DCABB,DCABC,DCABD,DCACA,DCACB,DCACC,DCACD,DCADA,DCADB
,DCADC,DCADD,DCBAA,DCBAB,DCBAC,DCBAD,DCBBA,DCBBB,DCBBC,DCBBD,DCBCA,DCBCB,DCBCC,DCBCD
,DCBDA,DCBDB,DCBDC,DCBDD,DCCAA,DCCAB,DCCAC,DCCAD,DCCBA,DCCBB,DCCBC,DCCBD,DCCCA,DCCCB
,DCCCC,DCCCD,DCCDA,DCCDB,DCCDC,DCCDD,DCDAA,DCDAB,DCDAC,DCDAD,DCDBA,DCDBB,DCDBC,DCDBD
,DCDCA,DCDCB,DCDCC,DCDCD,DCDDA,DCDDB,DCDDC,DCDDD,DDAAA,DDAAB,DDAAC,DDAAD,DDABA,DDABB
,DDABC,DDABD,DDACA,DDACB,DDACC,DDACD,DDADA,DDADB,DDADC,DDADD,DDBAA,DDBAB,DDBAC,DDBAD
,DDBBA,DDBBB,DDBBC,DDBBD,DDBCA,DDBCB,DDBCC,DDBCD,DDBDA,DDBDB,DDBDC,DDBDD,DDCAA,DDCAB
,DDCAC,DDCAD,DDCBA,DDCBB,DDCBC,DDCBD,DDCCA,DDCCB,DDCCC,DDCCD,DDCDA,DDCDB,DDCDC,DDCDD
,DDDAA,DDDAB,DDDAC,DDDAD,DDDBA,DDDBB,DDDBC,DDDBD,DDDCA,DDDCB,DDDCC,DDDCD,DDDDA,DDDDB
,DDDDC,DDDDD=====[/code]

解决方案 »

  1.   

    const string cNumbers = "ABCD";
    public string GetNewCode(string strOldCode)
    {
        if (strOldCode == null || strOldCode == string.Empty) return strOldCode;
        char[] vChars = strOldCode.ToCharArray();
        for (int i = vChars.Length - 1; i >= 0; i--)
        {
            int p = cNumbers.IndexOf(vChars[i]);
            if (p < 0) return null; // error
            if (p + 1 <= cNumbers.Length - 1)
            {
                vChars[i] = cNumbers[p + 1];
                for (int j = vChars.Length - 1; j > i; j--)
                    vChars[j] = cNumbers[0];
                break;
            }
        }
        return new string(vChars);
    }private void button1_Click(object sender, EventArgs e)
    {
        for (int i = 1; i <= 5; i++)
        {
            char[] vStart = new char[i];
            char[] vEnd = new char[i];        for (int j = 0; j < i; j++)
            {
                vStart[j] = cNumbers[0];
                vEnd[j] = cNumbers[cNumbers.Length - 1];
            }        string vStartStr = new string(vStart);
            string vEndStr = new string(vEnd);
            string vTemp = vStartStr;
            Console.Write(vTemp);
            int vLen = 0;
            do
            {
                vLen += vTemp.Length + 1;
                if (vLen >= 80)
                {
                    Console.WriteLine(); // 换行输出
                    vLen = 0;
                }            vTemp = GetNewCode(vTemp);
                Console.Write("," + vTemp);
            } while (vTemp != vEndStr);
            Console.WriteLine("=====");
        }
    }
      

  2.   

    多谢zswang 的帮助
    :)
    好用了 :)
      

  3.   


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    using System.Collections;
    using System.Text.RegularExpressions;namespace ConsoleApplication1
    {
        public class M
        {
            static void Main(string[] args)
            {
                int start = 0;
                
                while (start++ < 10000)
                {
                    PrintStr(start);
                }
            }        private static void PrintStr(int code)
            {
                int x = code;
                StringBuilder s = new StringBuilder();            GetNumber(ref code , ref s);            char[] bits = s.ToString().ToCharArray();            StringBuilder c = new StringBuilder();            for (int len = bits.Length; len > 0; len--)
                {
                    if ((bits.Length == len) && (bits[len - 1].ToString() == "0"))
                    {
                        continue;
                    }
                    else
                    {
                        c.Append(bits[len - 1]);
                    }
                }            string strCode = c.ToString();
                strCode = Regex.Replace(strCode, "1", "A");
                strCode = Regex.Replace(strCode, "2", "B");
                strCode = Regex.Replace(strCode, "3", "C");
                strCode = Regex.Replace(strCode, "4", "D");            if (!strCode.Contains("0"))
                {
                    Console.WriteLine(strCode);
                }
            }        private static void GetNumber(ref int code, ref StringBuilder strCode)
            {
                int v1 = code % 5;
                int v2 = code / 5;
                strCode.Append(v1.ToString());            if (v2 < 5)
                {
                    strCode.Append(v2.ToString());
                }
                else
                {
                    GetNumber(ref v2 , ref strCode);
                }
            }
        }
    }
      

  4.   

    我是根据数的进制来的,            string strCode = c.ToString();
                strCode = Regex.Replace(strCode, "1", "A");
                strCode = Regex.Replace(strCode, "2", "B");
                strCode = Regex.Replace(strCode, "3", "C");
                strCode = Regex.Replace(strCode, "4", "D");            if (!strCode.Contains("0"))
                {
                    Console.WriteLine(strCode);
                }
      

  5.   

    LineAge_Hell 的想法和写法是最直接的,收藏。
      

  6.   

    看看这个,是不是很另类,o(∩_∩)o...哈哈
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    using System.Collections;
    using System.Text.RegularExpressions;namespace ConsoleApplication1
    {
        public class M
        {
            static void Main(string[] args)
            {
                int start = 0;
                
                while (start++ < 10000)
                {
                    PrintStr(start.ToString());
                }
            }        private static void PrintStr(string code)
            {
                code = Regex.Replace(code , "0|5|6|7|8|9" , "X");            if (code.Contains("X"))
                {
                    return;
                }            code = Regex.Replace(code , "1" , "A");
                code = Regex.Replace(code , "2" , "B");
                code = Regex.Replace(code , "3" , "C");
                code = Regex.Replace(code , "4" , "D");            Console.WriteLine(code);
            }
        }
    }
      

  7.   

    如果用排列和组合的话,我没有其他的办法,只能老老实实的写,
    但考虑到在perl中,字符是可以递增的,所以就用进制的方法实现了,如果转化后的数字中出现的0,则忽视他,反正只要1234
    于是,又考虑到反正是要1234,为什么那么转换进制那么麻烦呢,所以,我就用10进制中的数字,对于除1234之外的数字,一律忽视            code = Regex.Replace(code , "0|5|6|7|8|9" , "X");            if (code.Contains("X"))
                {
                    return;
                }要的是只是1234,所以就        private static void PrintStr(string code)
            {
                code = Regex.Replace(code , "0|5|6|7|8|9" , "X");            if (code.Contains("X"))
                {
                    return;
                }            code = Regex.Replace(code , "1" , "A");
                code = Regex.Replace(code , "2" , "B");
                code = Regex.Replace(code , "3" , "C");
                code = Regex.Replace(code , "4" , "D");            Console.WriteLine(code);
            }
        }
    运行后发现,效率似乎还过的去
      

  8.   

    using System;
    using System.Collections.Generic;
    using System.Text;namespace abcdEnum
    {
        class Program
        {
            public static string GetCharFromNum(long l, Dictionary<string, string> dic)
            {
                string s = l.ToString("x");
                foreach (string a in dic.Keys)
                {
                    s = s.Replace(a, dic[a]);
                }
                return s;
            }
            static void Main(string[] args)
            {
                Dictionary<string, string> map = new Dictionary<string, string>();
                map.Add("0", "AA");
                map.Add("1", "AB");
                map.Add("2", "AC");
                map.Add("3", "AD");
                map.Add("4", "BA");
                map.Add("5", "BB");
                map.Add("6", "BC");
                map.Add("7", "BD");
                map.Add("8", "CA");
                map.Add("9", "CB");
                map.Add("a", "CC");
                map.Add("b", "CD");
                map.Add("c", "DA");
                map.Add("d", "DB");
                map.Add("e", "DC");
                map.Add("f", "DD");
                List<string> s1 = new List<string>();
                List<string> s2 = new List<string>();
                List<string> s3 = new List<string>();
                List<string> s4 = new List<string>();
                long min = 4 * 4 * 4 * 4;
                long max = 2 * min - 1;
                int Count1 = 0;
                int Count2 = 0;
                int Count3 = 0;
                int Count4 = 0;
                for (; max >= min; max--)
                {
                    string s = GetCharFromNum(max, map).Substring(2, 4);
                    if (s.Substring(0, 3) == "AAA")
                    {
                        s1.Add(s.Substring(3, 1));
                        Count1++;
                    }
                     if (s.Substring(0, 2) == "AA")
                    {
                        s2.Add(s.Substring(2, 2));
                        Count2++;
                    }
                     if (s.Substring(0, 1) == "A")
                    {
                        s3.Add(s.Substring(1, 3));
                        Count3++;
                    }
                    s4.Add(s);
                    Count4++;
                }
                Console.WriteLine("Count of 1 char:" + Count1);
                for(int i=s1 .Count-1;i>=0;i--)
                    Console.WriteLine(s1 [i]);
                Console.WriteLine("Count of 2 char:" + Count2);
                for (int i = s2.Count - 1; i >= 0; i--)
                    Console.WriteLine(s2[i]);
                Console.WriteLine("Count of 3 char:" + Count3);
                for (int i = s3.Count - 1; i >= 0; i--)
                    Console.WriteLine(s3[i]);
                Console.WriteLine("Count of 4 char:" + Count4);
                for (int i = s4.Count - 1; i >= 0; i--)
                    Console.WriteLine(s4[i]);        }
        }
    }
      

  9.   

    To:fckadxz你的方法很有创意,非常值得学习,呵呵,多谢你提供这么有创意的想法,但在实现细节上好像有点小问题
      

  10.   

    using System;namespace StringDisplay
    {
        class Program
        {
            static void Main(string[] args)
            {
                int n = 5;
                char start = 'A', end = 'D';
                string s = start.ToString();
                bool noCarry = true;        // 进位标志
                while (s.Length <= n)
                {
                    Console.WriteLine(s);   // 输出字符串
                    char[] c = s.ToCharArray();     // 转成数组后模拟加法递增和进位
                    for (int j = c.Length - 1; j >= 0; j--)
                        if (noCarry = (++c[j] <= end)) break;  // 当前位的字符递增
                        else c[j] = start;  // 如果递增产生进位,当前位回零,变成'A'
                    if (noCarry) s = new string(c); // 循环是以break 退出的
                    else s = start + new string(c); // 需要进位加长字符串
                }
            }
        }
    }
      

  11.   

    using System;namespace StringDisplay
    {
        class Program
        {
            static void ProcessString(string s, int end)
            {
                if (s.Length < end)                     // 字母长度是否达到要求
                    for (char c = 'A'; c <= 'D'; c++)
                        ProcessString(s + c, end);      // 递归调用下一级增加一个字母
                else
                    Console.WriteLine(s);
            }
            static void Main(string[] args)
            {
                for (int i = 0; i < 5; )    // 最高 5 位字母
                    ProcessString("", ++i);
                Console.Read();
            }
        }
    }
    递归就是简洁
      

  12.   

    using System;namespace StringDisplay
    {
        class Program
        {
            static void Main(string[] args)
            {
                int n = 5;
                int max = (int)Math.Pow(10, n);
                for (int i = 0, j; i < max; i++)
                {
                    char[] c = i.ToString().ToCharArray();
                    for (j = 0; j < c.Length; j++)
                        if ((c[j] += '\u0011') > 'D') break;
                    if (j < c.Length) continue;
                    string s = new string(c);
                    Console.WriteLine(s);
                }
            }
        }
    }
      

  13.   

    using System;namespace StringDisplay
    {
        class Program
        {
            static void Main(string[] args)
            {
                int n = 5;
                int max = (int)Math.Pow(10, n);
                for (int i = 0, j; i < max; i++)
                {
                    char[] c = i.ToString().ToCharArray();
                    for (j = 0; j < c.Length; j++)
                        if ((c[j] += '\u0010') <'A'||c[j]>'D') break;
                    if (j < c.Length) continue;
                    string s = new string(c);
                    Console.WriteLine(s);
                }
                Console.Read();
            }
        }
    }
    楼上少个判断条件,重新发个
      

  14.   

    using System;
    using System.Collections.Generic;namespace StringDisplay
    {
        class Program
        {
            static void Main(string[] args)
            {
                int n = 3;
                Queue<string> A = new Queue<string>();
                A.Enqueue("");  // 加入种子,也可写成 for (char c = 'A'; c <= 'D'; c++) A.Enqueue(c.ToString());
                while (A.Peek().Length<=n)
                {
                    for (char c = 'A'; c <= 'D'; c++)
                        A.Enqueue(A.Peek() + c);
                    Console.WriteLine(A.Dequeue());
                }
            }
        }
    }
    再来个滚动赋值的
      

  15.   

    我以上的4种方法总结一下:
    21楼利用char[] c模拟数字递增和进制,效率较高,代码较乱;
    22楼的循环内再嵌套递归最贴合题目长度变化的要求,效率最高;
    24楼利用循环数字转字符串效率很低,而且字符串不能太长,原理和LineAge_Hell朋友的一样,精简了代码;
    25楼滚动赋值代码最简洁,效率一般,额外加判断也能达到递归的效率;
      

  16.   

    这个题目根本不是进制的,如果强行用进制的,就引发了很多判断。
    如果用4进制,A代表0,B代表1,C代表2,D代表3,那么数字0代表"A"还是"AAAAA"呢?需要判断和定位吧
    如果用5进制,空位代表0,A代表1,B代表2,C代表3,D代表4,就可以解决上面提出的问题,我们决不可能把 1 和 11111 混为一谈,但是新的问题又来了,10代表什么?显然不可以出现A的空中楼阁,所以又需要判断。所以这个题目就是个滚动叠加的问题,详见25楼。
    模拟进制也可以,例子详见21楼,22楼,24楼,其中22楼模拟4进制最彻底。
      

  17.   

    to 我为编程狂 :22楼的代码不错。但是有些意见不同:
    “这个题目根本不是进制的,如果强行用进制的,就引发了很多判断。”这个有很大问题。这个问题用4进制是最简单和效率最高的。 至于判断,其实很简单的:比如'A' 我们可是根据字符个数衍生出 'AA''AAA''AAAA',而像'BA'我们也可同理衍生出'ABA' 'AABA' 。
      

  18.   

    尽管这个题目看起来很像数字的进制形式,因为它输出的结果和数字体系不能完全对应。
    例如数字系统的进位机制,A=0,B=1,C=2,D=3,之后要进位了吧,进位的结果是什么?10还是00?当然是10,10又代表AA号还是BA?我们只能牵强的让进位的结果等于00,得到AA,从这里开始掺入了判断或者定位,与数字体系分道扬镳了,根本不算进制形式,所以我说这个题目根本不是进制的,它是个滚动叠加。 
      

  19.   

    关于进位,其实无须考虑。比如说一个数16进制数表示32位地址,10H通常也可以写成0010H,那么xxxxH就自动完成32位枚举,xxxH就自动完成24位枚举。xxH就自动完成16位枚举。xH就自动完成8位枚举。