首页 新闻 会员 周边 捐助

a,b两个字符,生成长度为5的 所有排列,比如 aabba,ababa等

0
[待解决问题]

请教
两个字符 a,b
生成 n个字符长度的 排列 怎么实现 ,要得到所有的排列
比如 n=5 ,n可以自己定义
比如 "ababa" , aabba, bbaab,........

wbz009的主页 wbz009 | 初学一级 | 园豆:0
提问于:2016-04-11 21:23
< >
分享
所有回答(1)
2

int n = 5

sting[] s = new s[Math.Pow(2,n)] //2的n次方个

for(int i = 0; i <= s.Length; i++)

{

  s[i] = Convert.ToString(i,2);//十进制转二进制字符串  

  for(int j = n - s[i].Length; j >= 0; j--)//将二进制前面补0   例如1010变为01010

  {

    s[i].Insert(0,"0");

  }

  s[i] = s[i].Replace("0","a").Replace("1","b");

}

 

手打代码,可能有语法错误,理论值是对的

刘宏玺 | 园豆:14020 (专家六级) | 2016-04-11 22:13

测试了下  不对

支持(0) 反对(0) wbz009 | 园豆:0 (初学一级) | 2016-04-11 22:42

@普软网络: 理论也不对?你好好研究下

支持(1) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-04-11 22:42

@刘宏玺:  感觉要用到二叉树 

支持(0) 反对(0) wbz009 | 园豆:0 (初学一级) | 2016-04-11 22:44

@普软网络: 我这代码已经可以实现了。。。

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-04-11 22:45

@刘宏玺:  你的代码 我执行后的结果 

支持(0) 反对(0) wbz009 | 园豆:0 (初学一级) | 2016-04-11 22:47

@普软网络: 等我写给你

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-04-11 23:13

@普软网络: 

static void Main(string[] args)
        {            
            int n = 5;
            string[] s = new string[(int)Math.Pow(2, (double)n)]; //2的n次方个
            for (int i = 0; i < s.Length; i++)
            {
                s[i] = Convert.ToString(i, 2);//十进制转二进制字符串  
                for (int j = n - s[i].Length - 1; j >= 0; j--)//将二进制前面补0   例如1010变为01010
                {
                    s[i] = s[i].Insert(0, "0");
                }
                s[i] = s[i].Replace("0", "a").Replace("1", "b");

                Console.WriteLine(s[i]);
            }
            Console.ReadKey();
        }

这回你试试

支持(1) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-04-11 23:18

@刘宏玺:   谢谢 ,这下对了 ,但是这种思路  很特别 , 牛!!!

支持(1) 反对(0) wbz009 | 园豆:0 (初学一级) | 2016-04-11 23:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册