猜算式(软件大赛)

来源:互联网 发布:网络三大神书诛仙 编辑:程序博客网 时间:2024/05/18 11:27
看下面的算式:□□ 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]);     }}


原创粉丝点击