题目大致如下:
有N(N>=2)个麻将筛子,写出N个麻将排列组合,要求,不能重复如(1,1,2)和(1,2,1)是相同的;
当N=3是输出如下:
1,1,2
1,1,3
JAVA实现代码如下:
import java.util.Arrays;
import java.util.Vector;
import java.util.HashMap;
import java.util.Iterator;
public class ShowBox {
static HashMap hashmap = new HashMap();
public static void ShowBox(int i){
char [] number ={'1','2','3','4','5','6'};
char [] num = new char[i];
int size = ShowList(number,num,1,i);
System.out.println("总数如下:"+hashmap.size());
Iterator it = hashmap.values().iterator();
String []rlt=new String[hashmap.size()];
int ind=0;
while(it.hasNext()){
String result = (String) it.next();
rlt[ind]=result;
ind++;
// System.out.println(result);
// Arrays.sort(rlt);
}
Arrays.sort(rlt);
System.out.println("sie"+rlt.length);
for(int mq =0;mq<rlt.length;mq++){
System.out.println(rlt[mq]);
}
}
public static String[] sort(String [] str){
String result="";
String A,B;
int index=1;
for(int i=1;i<str.length;i++){
if(Integer.parseInt(str[i-1])>Integer.parseInt(str[i])){
A = str[i-1];
B = str[i];
str[i-1]= B;
str[i] =A;
sort(str);
}
}
return str;
}
public static String outstr(String [] ms){
String result="";
String [] pa = sort(ms);
for(int i=0;i<pa.length;i++){
result = result + pa[i]+",";
}
int num = result.length();
return result.substring(0,num-1);
}
public static void soct(char[] put){
String key="";
String obj="";
char [] buffer = put;
for(int i=0;i<buffer.length;i++)
{
obj = obj + buffer[i]+",";
key = key + buffer[i]+",";
}
key =outstr(key.split(","));
obj =outstr(obj.split(","));
hashmap.put(key,obj);
}
public static char[] sort(char [] num){
int next=0;
char A,B;
char [] mc = new char[num.length];
mc = num;
System.out.println(num);
for(int i=0;i<mc.length;i++){
next = i+1;
if(next>mc.length-1){
next=mc.length-1;
}
if(mc[i]>mc[next])
{
A = mc[next];
B = mc[i];
mc[next]=B;
mc[i]=A;
sort(mc);
}
}
System.out.println(mc);
return mc;
}
public static int ShowList(char [] number,char[] num,int index,int count)
{
for(int i=0;i<number.length;i++){
num[index-1]=number[i];
if(index==count)
{
char [] cm = num;
soct(cm);
}else{
ShowList(number,num,index+1,count);
}
}
return 0;
}
public static void main(String args[])
{
ShowBox(3);
}
}