算法研究,應付考試

package liu.jyc;數組

public class Question {ide

    public static void main(String[] args) {ui

        fun();spa

    public static void fun(){orm

        String[] a = new String[17]; ///字符串

        for(int i = 1;i<=9;i++){get

            a[2*(i-1)]=i+"";string

        for(int j = 0;j<Math.pow(3, 8);j++){///  一共有3^8種狀況it

            int p = j;io

            for(int i = 0;i<8;i++){  //   一共有8個空是填運算符的

                int k = p%3;//取末位 (說的是3進制的末位)

                p/=3; //   精妙之處!!  去掉3進制最後一位,當下次循環就p%3就取到的是倒數第2位的數字了  我想很久才明白的

                switch(k){

                case 0:

                    a[2*i+1]=" +";

                    break;

                case 1:

                    a[2*i+1]=" -";

                    break;

                case 2:

                    a[2*i+1]="o";//  表明空

                    break;

            //  至此,將數組轉換成字符串

            String test = "";

            for(int i = 0;i<a.length;i++){

                if(!a[i].equals("o")){ ///  是否是空 就拼成字符串

                    test= test+a[i];    

            if(check(test)){

                System.out.println(test.replaceAll(" ", "")+"=110");

     * 判斷字符串  test  是否知足題幹要求   相似於   123 -4 -56 +789

     * @param a

     * @return

    private static boolean check(String test) {

        //  test  是這樣的字符串  123 -4 -56 +789

        int sum = 0;http://www.huiyi8.com/gundongdaima/

            String[] numbers = test.split(" "); 滾動代碼

            for(int j = 0;j<numbers.length;j++){

                if(numbers[j].startsWith("+")){

                    numbers[j]= numbers[j].substring(1);

        if(sum==110){

            return true;

        return false;

相關文章
相關標籤/搜索