下列乘法算式中:每个汉字代表1个数字(1~9)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。    赛软件 * 比赛  =  软件比拼
 
试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。
请给出代码,顺便提醒一下各位··请务必写一下思路··我用最笨的方法依次遍历的时候是出不了结果的··

解决方案 »

  1.   

    额,我是弄的无解才Google一下原来真是无解
      

  2.   


    public class Test {
    public static void main(String[] args) {
    int i,j,tmp,count=0;
    for(i=302;i<999;i++){
    if(i%10==1) continue;
    for(j=12;j<99;j++){
    if(j%10==1) continue;
    tmp=i*j;
    if(tmp<9999){
    if(test(new Node(i),new Node(j),new Node(tmp)))
    System.out.println(i+" * "+j+"="+tmp);
    }
    }
    }
    }


    public static boolean test(Node srj,Node bs,Node rjbp){
    return srj.getA()==bs.getC() && srj.getb()==rjbp.getD()
    && srj.getC()==rjbp.getA() && bs.getb()==rjbp.getb() 
    ;
    }

    private static class Node {
    private int a;
    private int b;
    private int c;
    private int d;
    private int num;
    public int getD(){
    return num/1000;
    }
    public int getA() {
    if(num<100){
    return 0;
    }else if(num>100 && num<1000){
    return num/100;
    }else{
    return num/100%10; 
    }
    }
    public int getb() {
    return num/10%10;
    }
    public int getC(){
    return num %10;
    }
    public Node(int num){
    this.num=num;
    }
    public int getNum(){
    return num;
    }
    }

    }
    465 * 14=6510
      

  3.   

    int a,b,c,e,f,value,x,y,z,count;
    int i,j;
    count=0;
    for(i=100;i<10000;i++)
    {
    a=i/100;
    b=i%100/10;
    c=i%10;
    for(j=10;j<100;j++)
    {
    e=j/10;
    f=j%10;
    if(a==f)
    {
    value=i*j;
    x=value/1000;
    y=value%1000/100;
    z=value%100/10;
    if(x==b && y==c && z==e)
    {
    printf("sairuanjian=%d,bisai=%d\n",i,j);
    count++;
    }
    }
    }
    }
    if(count==0)
    printf("cant find a numbers!\n");

    return 0;
    465*14=6510!!!!!!!!!!!!!