算式求解

package dati;
import java.util.*;
看下面的算式:
□□ x □□ = □□ x □□□
它表示:两个两位数相乘等于一个两位数乘以一个三位数。
如果没有限定条件,这样的例子很多。
但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。
该算式中1至9的每个数字出现且只出现一次!
比如:
46 x 79 = 23 x 158
54 x 69 = 27 x 138
54 x 93 = 27 x 186
.....
请编程,输出所有可能的情况!
注意:
左边的两个乘数交换算同一方案,不要重复输出!
不同方案的输出顺序不重要
 
 
public class suanshi {
 static int[] shu={1,2,3,4,5,6,7,8,9};
 static HashSet<String> set=new HashSet<String>();
public static void main(String args[]){
 zhuan(0);
}
static void zhuan(int n){
 if(n>=9){
  if((shu[0]*10+shu[1])*(shu[2]*10+shu[3])==(shu[4]*10+shu[5])*(shu[6]*100+shu[7]*10+shu[8])){
   if(set.add(""+shu[0]+shu[1])){
    set.add(""+shu[2]+shu[3]);
    System.out.println(""+shu[0]+shu[1]+"*"+shu[2]+shu[3]+"="+shu[4]+shu[5]+"*"+shu[6]+shu[7]+shu[8]);
   }
  }
 }
 else{
  for(int i=n;i<9;i++){
   int temp=shu[n];
   shu[n]=shu[i];
   shu[i]=temp;
   zhuan(n+1);
     temp=shu[n];
   shu[n]=shu[i];
   shu[i]=temp;
   
  }
 }
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值