• C# 简单的统计指定几个字符组合的所有结果


    比如 用 a,b,c,d 4个字符组成一个8个长度的字符串,问一共有多少可能,应该有4的8次方种,用代码简单实现

     private string[] AAA()
            {
                string[] cs = { "a", "b", "c", "d" };
                string[] ts = new string[8];
                string[] ss = new string[Convert.ToInt32(Math.Pow(cs.Length, 8))];
                int index = 0;
                for (int i_0 = 0; i_0 < cs.Length; i_0++)
                {
                    for (int i_1 = 0; i_1 < cs.Length; i_1++)
                    {
                        for (int i_2 = 0; i_2 < cs.Length; i_2++)
                        {
                            for (int i_3 = 0; i_3 < cs.Length; i_3++)
                            {
                                for (int i_4 = 0; i_4 < cs.Length; i_4++)
                                {
                                    for (int i_5 = 0; i_5 < cs.Length; i_5++)
                                    {
                                        for (int i_6 = 0; i_6 < cs.Length; i_6++)
                                        {
                                            for (int i_7 = 0; i_7 < cs.Length; i_7++)
                                            {
                                                ts[0] = cs[i_0];
                                                ts[1] = cs[i_1];
                                                ts[2] = cs[i_2];
                                                ts[3] = cs[i_3];
                                                ts[4] = cs[i_4];
                                                ts[5] = cs[i_5];
                                                ts[6] = cs[i_6];
                                                ts[7] = cs[i_7];
                                                ss[index++] = String.Join("-", ts);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                return ss;
            }

    上面的代码显然还是可以优化的

    private string[] BBB()
            {
                string[] cs = { "a", "b", "c", "d" };
                int power = 8;
                string[] ss = new string[Convert.ToInt32(Math.Pow(cs.Length, power))];
                string[] ts = new string[power];
                int i = 0;
                int index = 0;
                Recur(cs, ref i, power - 1, ts, ref index, ss);
                return ss;
            }
    
            private void Recur(string[] cs, ref int i, int power, string[] ts, ref int index, string[] ss)
            {
                for (int j = 0; j < cs.Length; j++)
                {
                    ts[i] = cs[j];
                    if (i < power)
                    {
                        i++;
                        Recur(cs, ref i, power, ts, ref index, ss);
                    }
                    else
                    {
                        ss[index++] = String.Join("-", ts);
                    }
                }
                i--;
            }
  • 相关阅读:
    SASS用法指南(转)
    前端框架参考
    NodeJS路由(server.js + router.js)
    NodeJS收发GET和POST请求
    node中的对象
    《怪兽必须死》游戏框架分析
    Git学习笔记(SourceTree克隆、提交、推送、拉取等)
    以前做的H5推广小游戏(活动及派发奖品形式)
    Egret3D初步学习笔记四 (地形使用)
    Egret3D初步学习笔记三 (角色使用)
  • 原文地址:https://www.cnblogs.com/luludongxu/p/4497365.html
Copyright © 2020-2023  润新知