猜算式(软件大赛)

看下面的算式:□□ x □□ = □□ x □□□它表示:两个两位数相乘等于一个两位数乘以一个三位数。如果没有限定条件,这样的例子很多。但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。该算式中1至9的每个数字出现且只出现一次!比如:46 x 79 = 23 x 15854 x 69 = 27 x 13854 x 93 = 27 x 186.....请编程,输出所有可能的情况!注意:左边的两个乘数交换算同一方案,不要重复输出!不同方案的输出顺序不重要

代码:

package BigTitle;
public class CaiSuanShi {
	private static int count=0;
	public static void main(String[] args) {
		// TODO Auto-generated method stub
       int list[]={1,2,3,4,5,6,7,8,9};
	   perm(list,0,8);
	}
     public static String perm(int list[],int k,int m)
     {
    	 int i;
    	 int temp;
    	 String str="";
    	 if(k>m)
    	 {
    		 for(i=0;i<=m;i++)
    		 {
    			 str+=String.valueOf(list[i]);
    			 if(str.length()==9)
    			 {
    		        deal(str);	
    				// System.out.println(str);
    			 }
    		 }
    		 count++;
    	 }
    	 else
    	 {
    		 for(i=k;i<=m;i++)
    		 {
    			 temp=list[k];
    	    	 list[k]=list[i];
    	    	 list[i]=temp;
    			perm(list,k+1,m);
    	    	 temp=list[k];
    	    	 list[k]=list[i];
    	    	 list[i]=temp;
    		 }
    	 }
    	 return str;
     }
     public static void deal(String s)
     {
    	 int arr[]=new int[4];
    	 for(int i=0;i<3;i++)
    	 {
    		 arr[i]=Integer.valueOf(s.substring(i*2, 2*(i+1)));
    	 }
    	 arr[3]=Integer.valueOf(s.substring(6));
    	 if(arr[0]*arr[1]==arr[2]*arr[3])
    		 System.out.println(arr[0]+"X"+arr[1]+"="+arr[2]+"X"+arr[3]);
     }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值