//写一函数,输入一个字符串,输出该字符串字符的所有排列方式
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);
}
}