吸血鬼数字的另类解法

 

 在阅读java编程思想时,无意看到了这个题目,感觉很有意思,就写了如下的程序来运行,

public static void main(String[] args) {

       try {
           int count = 9999;
           long beginTime = System.currentTimeMillis();
           while(count >1000){
                if(count%100 != 0){
                    String num = count+"";
                    String[] strArr = new String[4];
                    strArr[0] = num.substring(0,1);
                    strArr[1] = num.substring(1,2);
                    strArr[2] = num.substring(2,3);
                    strArr[3] = num.substring(3,4);
                    //循环判断,i为不固定位所在位
                    for (int i = 0; i < 3; i++) {
                        String m = "",n = "";
                        boolean k = false;
                        //根据首位为0不变和不固定位i确定其余两位
                        for (int j = 1; j < 4; j++) {
                           if(j!=0 && j != i+1){
                               if(k){
                                   n = strArr[j];
                               }else{
                                   m = strArr[j];
                                   k = true;
                               }

                            }
                        }
                        //System.out.println("m"+m+",n"+n);
                        //循环判断即可
                        if(Integer.parseInt(strArr[0]+strArr[i+1]) * Integer.parseInt(m+n) == count ){
                            System.out.println(strArr[0]+strArr[i+1] + "*" + m + n + "=" + count);
                        }else if(Integer.parseInt(strArr[0]+strArr[i+1]) * Integer.parseInt(n+m) == count ){
                            System.out.println(strArr[0]+strArr[i+1] + "*" + n + m + "=" + count);
                        }else if(Integer.parseInt(strArr[i+1]+strArr[0]) * Integer.parseInt(m+n) == count ){
                            System.out.println(strArr[i+1]+strArr[0] + "*" + m + n + "=" + count);
                        }else if(Integer.parseInt(strArr[i+1]+strArr[0]) * Integer.parseInt(n+m) == count ){
                            System.out.println(strArr[i+1]+strArr[0] + "*" + n + m + "=" + count);
                        }
                        }

                    }
                count --;
            }
           long endTime = System.currentTimeMillis();
           long timeDif = endTime - beginTime;
           System.out.println("程序运行时间为"+timeDif);

       } catch (Exception e) {
            e.printStackTrace();
        }
    }

在写之前也看了一些博客,但主要是我刚看到这个的时候就是想先确定数字,然后确定每一位,和有些博客先试能不能满足的方法不太一样。还有一点就是,我想这个数字肯定不会就只有4位,本来是想写一个可以任意指定count的程序,但此处的位数和数字的组合暂时未想到办法处理,之后会想办法完善,也想问一下大家有没有什么办法。

 

最后,程序运行结果如下:

 

posted @ 2020-06-23 17:46  kingmodeyu  阅读(174)  评论(0编辑  收藏  举报