求字符串在给定长度情况下所有排列方式
如str="abc"
min=2,max=3
结果为ab ac ba abc acb bac bca cba cab bc cb
- C# code
using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication9{ class Program { private int x; private void Permutation_Solution1(char[] pStr, int begin, int end,int min,int max) { int count = 0; if (begin == end - 1) //只剩一个元素 { for (int i = x; i < end; i++) { count++; } if (count >= min && count <= max) { for (int i = x; i < end; i++) //打印 { Console.Write(pStr[i]); } Console.WriteLine(string.Empty); } } else { for (int k = begin; k < end; k++) { swap(ref pStr[k], ref pStr[begin]); //交换两个字符 Permutation_Solution1(pStr, begin + 1, end,min,max); swap(ref pStr[k], ref pStr[begin]); //恢复 } } } private void swap(ref char p1,ref char p2) { char c; c = p1; p1 = p2; p2 = c; } static void Main(string[] args) { string str = "abcde"; char[] c =str.ToCharArray(); Program g = new Program(); int len=str.Length; Console.WriteLine("请输入min,max(在1和{0}之间)",len ); int min = Convert.ToInt32(Console.ReadLine()); int max = Convert.ToInt32(Console.ReadLine()); for (int i = 0; i < len; i++) { for (int j = 0; j < len; j++) { g.x = i; g.Permutation_Solution1(c, i, j+1,min ,max); } } Console.ReadKey(); } }}
------解决方案--------------------------------------------------------
那把分先留下吧
------解决方案--------------------------------------------------------
you身体健康
------解决方案--------------------------------------------------------
LZ 还未毕业,已经有算法功底,前途不可限量。。。