C#实现输入一个字符串输出该字符串字符的所有排列方式
2016-07-22 13:59
671 查看
//写一函数,输入一个字符串,输出该字符串字符的所有排列方式
public static void getStrs(string str){
if(str.Trim().Length==0){
return;
}
int p = 1,k=0,j=0,n=getN (str.Length);
string[] strs = new string[n];
bool flag;
for(int i=0;i<n;i++){//初始化
strs[i] = "";
}
int m = getN(str.Length) / str.Length;
Console.WriteLine ("m={0}",m);
while (p<=str.Length){
for(int i=0;i<str.Length && k<n;i++){
while( !strs[k].Contains(str[i].ToString()) ){
strs [k] = strs [k] + str [i];
j++;k++;
if( m==0 || j % m ==0){
j = 0;
break;
}
}
}
flag = true;
for(int i=0;i<n;i++){
if(strs[i].Length!=p){
flag = false;
break;
}
}
if (flag) {
if (str.Length - p <= 1) {
m = 0;
} else {
m = getN (str.Length - p) / (str.Length - p);
}
p++;
k = 0;
}
}
//输出所有情况:
for(int i=0;i<n;i++){
Console.WriteLine (strs[i]+" : "+i);
}
}
public static void getStrs(string str){
if(str.Trim().Length==0){
return;
}
int p = 1,k=0,j=0,n=getN (str.Length);
string[] strs = new string[n];
bool flag;
for(int i=0;i<n;i++){//初始化
strs[i] = "";
}
int m = getN(str.Length) / str.Length;
Console.WriteLine ("m={0}",m);
while (p<=str.Length){
for(int i=0;i<str.Length && k<n;i++){
while( !strs[k].Contains(str[i].ToString()) ){
strs [k] = strs [k] + str [i];
j++;k++;
if( m==0 || j % m ==0){
j = 0;
break;
}
}
}
flag = true;
for(int i=0;i<n;i++){
if(strs[i].Length!=p){
flag = false;
break;
}
}
if (flag) {
if (str.Length - p <= 1) {
m = 0;
} else {
m = getN (str.Length - p) / (str.Length - p);
}
p++;
k = 0;
}
}
//输出所有情况:
for(int i=0;i<n;i++){
Console.WriteLine (strs[i]+" : "+i);
}
}
相关文章推荐
- c#调用COM组件
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法