我只会C++,给你C++的吧做个参考
void swap(int a,int b);这个你自己肯定会写
void perm(char *list,int i,int n)
{
int j;
if(i==n)
{
for(j=0;j<n;j++)
cout<<list[j];//list就是那个数字字符串
cout<<endl;
}
else
for(j=i;j<=n;j++)
{
swap(list[i],list[j]);
perm(list,i+1,n);
swap(list[i],list[j]);
}
}
调用是perm(串地址,0,len(串));
void swap(int a,int b);这个你自己肯定会写
void perm(char *list,int i,int n)
{
int j;
if(i==n)
{
for(j=0;j<n;j++)
cout<<list[j];//list就是那个数字字符串
cout<<endl;
}
else
for(j=i;j<=n;j++)
{
swap(list[i],list[j]);
perm(list,i+1,n);
swap(list[i],list[j]);
}
}
调用是perm(串地址,0,len(串));
import java.util.List;
import java.util.Collections;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Enumeration;public class TestString{
public static void main(String[] args){
Hashtable ht = new Hashtable();
int num1 = 0;
int num2 = 0;
int num3 = 1;
int num4 = 0;
String str = "12345";
num2 = str.length();
for(;num2>0;num2--){
num3 *= num2;
}
System.out.println(num3);
char[] ch = new char[str.length()];
str.getChars(0,str.length(),ch,0);
List list = new ArrayList();
for(int num=0;num<ch.length;num++){
list.add(new String(ch[num]+""));
}
while(num4<num3){
Collections.shuffle(list);
Iterator it = list.iterator();
StringBuffer sb = new StringBuffer("");
while(it.hasNext()){
sb.append(it.next());
}
ht.put(sb.toString(),"");
num4 = ht.size();
}
Enumeration e = ht.keys();
int num5 = 1;
while(e.hasMoreElements()){
System.out.println(num5+" "+e.nextElement());
num5++;
}
}
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in); String string = scanner.nextLine();
char[] chars = string.toCharArray(); Set<Character> array = new HashSet<Character>();
for(int i=0;i<chars.length;i++){
array.add(chars[i]);
}
int total = array.size();
int sum = 1;
for(int i=1;i<=total;i++){
sum *= i;
}
System.out.println("SUM: " + sum);
}
}
import java.util.List;
import java.util.Collections;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Enumeration;
import java.util.HashSet;public class TestString{
public static void main(String[] args){
Hashtable ht = new Hashtable();
int num1 = 0;
int num2 = 0;
int num3 = 1;
int num4 = 0;
int num5 = 0;
String str = "11221";
//存放 0 - 9 各个出现的个数
int n[] = new int[10];
num2 = str.length();
//可能出现字符串的所有个数
for(;num2>0;num2--){
num3 *= num2;
}
System.out.println(num3);
char[] ch = new char[str.length()];
str.getChars(0,str.length(),ch,0);
List list = new ArrayList();
for(int num=0;num<ch.length;num++){
list.add(new String(ch[num]+""));
}
//求出 0 - 9 各个出现的个数
for(int num=0;num<list.size();num++){
int index = Integer.parseInt(list.get(num).toString());
n[index]++;
}
num5 = jieCheng(n);
//num3为没有重复数字的字符串个数
num3 = num3/num5;
System.out.println(num3);
while(num4<num3){
Collections.shuffle(list);
Iterator it = list.iterator();
StringBuffer sb = new StringBuffer("");
while(it.hasNext()){
sb.append(it.next());
}
ht.put(sb.toString(),"");
num4 = ht.size();
}
Enumeration e = ht.keys();
int num6 = 1;
while(e.hasMoreElements()){
System.out.println(num6+" "+e.nextElement());
num6++;
}
}
//数祖中每个值的阶乘,再乘机
public static int jieCheng(int n[]){
int sum=1;
for(int num=0;num<n.length;num++){
for(;n[num]>0;n[num]--){
sum *= n[num];
}
}
return sum;
}
}修改后的
import java.util.*;public class StringTest{
public static void main(String[] args){
String str = "1233";
char[] ch = new char[str.length()];
str.getChars(0,str.length(),ch,0);
List list = new ArrayList();
for(int num=0;num<ch.length;num++){
list.add(new String(ch[num]+""));
}
StringTest st = new StringTest();
String[] obj = new String[str.length()];
Set set = new HashSet();
st.getAll(obj,list,set);
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println("总共有 "+set.size());
}
public void getAll(String[] obj,List list,Set set){
if(list.isEmpty()){
String sb = "";
for(int num=0;num<obj.length;num++){
sb += obj[num];
}
//System.out.println(sb.toString());
set.add(sb);
return;
}
for(int num=0;num<list.size();num++){
//sb.append(list.get(num));
obj[list.size()-1] = (String)list.get(num);
List l = new ArrayList(list);
l.remove(list.get(num));
this.getAll(obj,l,set);
}
}
}