日期:2014-05-20  浏览次数:20737 次

几道竞赛题,请用java做出来,求教!
1.下列乘法算式中:每个汉字代表1个数字(1~9)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。

  赛软件 * 比赛 = 软件比拼

试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。
2.计算24是流行的扑克游戏。其方法是任意取出4张牌,A J Q K 王牌 算 1,其它牌按点数计算,花色不计。目标是通过加、减、乘、除和括号最终算出24。设计一个程序,输入4个数字(1~10),则列出所有可能计算结果为24的方案。要求:
方案不能重复(加法乘法交换律等算不同方案)。
计算中局部可以为分数,结果为整数即可(如 3 3 7 7 算法: (3 + 3/7)*7)
如果没有找到方案输出:无解。


------解决方案--------------------
Java code
//赛软件 * 比赛 = 软件比拼


public class Test2 {
    public static void main(String args[]) {
        int a,b,c,d,e,f;   //a代表赛,  b代表软,  c代表件,  d代表 比,  e代表比,  f代表拼
        
        
        for(a=1;a<=9;a++) {
            for(b=1;b<=9;b++) {
                for(c=1;c<=9;c++) {
                    for(d=1;d<=9;d++) {
                        for(e=1;e<=9;e++) {
                            for(f=1;f<=9;f++) {
                                int n1 = a*100+b*10+c;
                                int n2 = d*10+a;
                                int n3 = b*1000+c*100+e*10+f;
                               if(n3 == n1*n2) {
                                   System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f);
                                   System.out.println("n1="+n1+" n2="+n2+" n3="+n3);
                               }
                            }
                        }
                    }
                }
            }
        }
        
        
    }
}

------解决方案--------------------
第二个我个人感觉有点难 我想想再说吧~~~
------解决方案--------------------
第一题 [100~999] * [10~99] = ???? 算出所有不超过四位数的结果,然后枚举。141559103
------解决方案--------------------
没看清 不考虑0, [100~999] * [10~99] = ???? 算出所有不超过四位数的结果,筛选出不含0的,然后枚举。算法复杂度不高嘛
------解决方案--------------------
第二题 依旧是枚举啊,估计你做的是枚举的专题,自己多想想吧
------解决方案--------------------
public class Test
{
public static void main(String[] args)
{
/**
* abc*da=bcde
* 若找到满足这样的等式的数,就将其输出
*/
int m1,m2,m3;
int x1,x2,x3,x4;
for(int a=1;a<=9;a++)
{
for(int b=1;b<=9;b++)
{
for(int c=1;c<=9;c++)
{
for(int d=1;d<=9;d++)
{
m1=a*100+b*10+c;
m2=d*10+a;
m3=m1*m2;
x1=m3%10;
x2=m3/10%10;
x3=m3/100%10;
x4=m3/1000;
if(x4==b&&x3==c&&x2==d)
{
System.out.println(m1+"*"+m2+"="+m3);
}
}
}
}
}
}
}
------解决方案--------------------
探讨

public class Test
{
public static void main(String[] args)
{
/**
* abc*da=bcde
* 若找到满足这样的等式的数,就将其输出
*/
int m1,m2,m3;
int x1,x2,x3,x4;
for(int a=1;a<=9;a++)
{
for(int b=1;b<=9;b++)
{
for……

------解决方案--------------------
。-。-我在10楼得回复引用错了。。应该引用的是1楼的!!