全排列实现猜算式问题

来源:互联网 发布:美发软件哪个好 编辑:程序博客网 时间:2024/05/17 09:20


import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;


/*
 * 利用全排列解决猜算式问题
 * 全排列:利用递归实现全排列,每次用当前交脚标值进行和其他值的交换
 */
public class quanpailie {


private static Set<String> ss=new HashSet<String>();
public static void main(String[] args) {
char[] num={'1','2','3','4','5','6','7','8','9'};
quanpai(num,0,num.length);


}
public static void quanpai(char [] carr,int at,int len){
if(at==len-1){

   String str=new String(carr);
   char []aa=str.toCharArray();
   Arrays.sort(aa);
   String str1=new String(aa);
   int a=Integer.parseInt(str.substring(0, 2))*Integer.parseInt(str.substring(2, 4));
   int b=Integer.parseInt(str.substring(4, 6))*Integer.parseInt(str.substring(6,9));
   if("123456789".equals(str1) && a==b && ss.add(str.substring(2, 4)+str.substring(0, 2)) && ss.add(str.substring(0, 2)+str.substring(2, 4))){
    System.out.println(str.substring(0, 2)+"*"+str.substring(2, 4)+"="+str.substring(4, 6)+"*"+str.substring(6,9));
   }
   

}else{
for(int j=at;j<len;j++){
swap(carr,at,j);
quanpai(carr,at+1,len);
swap(carr,at,j);
}

}
}
public static void swap(char[]cc,int i,int j){
char c=cc[j];
cc[j]=cc[i];
cc[i]=c;
}

}
0 0
原创粉丝点击