9个数运算结果为110

作者:dawncold 发布时间:April 8, 2012 分类:技术

昨天参加了一个小型编程比赛,有个题目是这样的,有1~9这九个数字,按照顺序排列着,你可以在他们之间加入加号、减号或者什么都不加,组成的算式经过运算后结果为110的输出出来。

看着好简单的题目,当时比赛时候就是一下子没做出来,现在做好了,贴出来,如果有需要可以拿去用哈,代码风格不算好,因为是比赛嘛,又不是商业项目,先快速得到结果再说!


import java.util.ArrayList;


public class unittest
{
    public static void main(String[] argStrings)
    {
        long start = System.currentTimeMillis();
        ArrayList<String> allopts = new ArrayList<String>();
        int a,b,c,d,e,f,g,h;
        for(a = 0;a < 3;a++)
            for(b = 0;b < 3;b++)
                for(c = 0;c < 3;c++)
                    for(d = 0;d < 3;d++)
                        for(e = 0;e < 3;e++)
                            for(f = 0;f < 3;f++)
                                for(g = 0;g < 3;g++)
                                    for(h = 0;h < 3;h++) {
                                        allopts.add(""+a+b+c+d+e+f+g+h);
                                    }
        
        for (String string : allopts)
        {
            String base = "1x2x3x4x5x6x7x8x9";
            for (int i = 0; i < string.length(); i++)
            {
                String tmp = getOpt(Integer.parseInt(""+string.charAt(i)));
                base = base.replaceFirst("x", tmp);
            }
            int x = getResult(base, string.replaceAll("2", "").replaceAll("0", "+").replaceAll("1", "-"));//2->null
            if (x == 110)
            {
                System.out.println(base);
            }
        }
        System.out.println("All Run Time: " + (System.currentTimeMillis() - start) + "ms");
    }
    
    public static String getOpt(int opt) {
        String retString = "";
        switch (opt)
        {
            case 0:
                retString = "+";
                break;
            case 1:
                retString = "-";
                break;
            case 2:
                retString = "";
                break;
            default:
                break;
        }
        
        return retString;
    }
    
    public static int getResult(String calculatString, String optString)
    {
        ArrayList<Integer> allNum = new ArrayList<Integer>();
        ArrayList<String> allOpt = new ArrayList<String>();
        for (String string : calculatString.split("[+-]"))
        {
            allNum.add(Integer.parseInt(string));
        }
        for (int i = 0; i < optString.length(); i++)
        {
            allOpt.add(optString.charAt(i) + "");
        }
        int result = allNum.get(0);
        for (int i = 1; i < allNum.size(); i++)
        {
            char x = (i - 1) == allOpt.size()?'+':allOpt.get(i - 1).charAt(0);
            int nextNum = i == allNum.size()?0:allNum.get(i);
            result = getValue(result, nextNum, x);
        }
        
        return result;
        
    }
    
    public static int getValue(Integer num1, Integer num2, char opt)
    {
        int ret = 0;
        switch (opt)
        {
            case '+':
                ret = num1 + num2;
                break;
            case '-':
                ret = num1 - num2;
                break;
            default:
                break;
        }
        
        return ret;
    }
}

结果是这样的:


1+2+34+5+67-8+9
1+234-56-78+9
1-2+3+45-6+78-9
12+3+45+67-8-9
12+34+56+7-8+9
12-3+4-5+6+7+89
123+4+5+67-89
123+4-5-6-7-8+9
123-4+5-6-7+8-9
123-4-5+6+7-8-9
All Run Time: 496ms

最后我算了算运行时间,应该这就是很慢的了,幸好只有加减和空,要不然会更麻烦的……

终于回到自由的时候

作者:dawncold 发布时间:December 16, 2011 分类:技术

自从前段时间学校封杀了研究生web端自由登陆drcom以来,我就只能找网络中心的老师开了本科生的web登陆,速度很慢,还有流量限制。

又加上Lion系统中的原drcom客户端不能用,我就攒了攒勇气下载了drcom4mac的源代码回来自己编译,本以为就是平台的微弱差异,没想到一大堆根本看不懂的错误出现,也没那么平静的心来阅读一个个C函数,就这样搁置了。

昨晚Drcom的GoogleGroups中有人发来邮件,说是写了个java的drcom客户端欢迎测试,我今天早晨配置好了libpcap库和jpcap库,然后使用了这个客户端,打开GUI后输入账号密码,登陆没反应。于是告诉了作者,中午收到作者来信,说暂时还只能用命令行方式,这我当然能够接受,可惜在Mac的terminal中显示的中文提示都是乱码,于是svn到了原代码到eclipse中看看吧,按照提示组合了命令行,成功登陆了!

从此又自由了。

项目地址:http://code.google.com/p/jdrcom/

Spring

作者:dawncold 发布时间:December 10, 2011 分类:技术

这不是代表春天或者温泉的意思,实际上是我正在学习期末考试课程S2SH中的一个框架——Spring。

就一变态框架啊,Ioc、AOP这些都是令业界震撼的思想级产物。特别是AOP,就是和OOP同层次的东西,怪不得学习起来很慢很艰难,不过我清楚,期末考试肯定考得超简单,现在我基本是学到哪里忘到哪里。

顺便说下,用Spring做一个简单的AOP测试实例的话,光用自带的jar包根本不行,还需要自己添加下面这几个:

1.aopalliance-1.0.jar(在struts2的lib目录中找到的)

2.aspcetjweaver-1.5.3.jar(aspcetj的官网怎么上都上不去:http://www.aspectj.org,于是在这里下载的:http://www.jar114.com/j/982

3.cglib-nodep-2.2.2.jar(本来用cglib-2.2.2.jar的,但提示缺少asm就下载了这个集成asm的nodep版本,我以为asm就是Spring中的那个asm包呢。官方网站:http://cglib.sourceforge.net

Lion吃了我的Java

作者:dawncold 发布时间:July 22, 2011 分类:技术

刚刚看到cnbeta上一篇关于flash在lion中cpu占用率很高的问题,我感觉这都不算什么问题了,以前就发现占用率相当高,看flash视频的时候电脑会非常热。

但这次说的不是这个问题,而是adobe提到的lion没有预置java,这点有些奇怪,难道lion安装上就把java删除了?我开了Terminal,输入:


java -version

你猜显示什么?


No Java runtime present, requesting install.

接着安装更新的那种小窗口就跳出来了,问我是否安装java,那就装上吧,我有时可能用eclipse。

装好后就能用了,不知道还有什么东西被偷偷“吃掉”了。


java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-383, mixed mode)