A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class suanfa {  
    public static void main(String[] args){  
        String str = "123456789";  
        fun(str,1);     // 调用函数,从1开始修改  
    }  


        // 遍历所有情况  
    public static void fun(String v, int n) {   
        if(n==9){   // 当数字达到9时,检验结果
            recheck(v);  
        }else{  // 递归向后修改,数字 变为 数字加符号  
            fun(v.replace(n+"", n+"+"),n+1);  //两个数之间添加‘+‘
            fun(v.replace(n+"", n+"-"),n+1);  //两个字符之间添加'-‘'
            fun(v,n+1);  //两个字符什么都不加
        }  
    }  
    // 验证 并 输出  
    public static void recheck(String str){  
        String[] s = str.split("[\\+]");  //根据给定正则表达式的匹配拆分此字符串。
        int sum = 0;      //
        for(String t:s){  
            String[] sub = t.split("[\\-]");  
            int num = Integer.parseInt(sub[0]);  
            // 计算负数  
            for(int i=1;i<sub.length;i++){     //形如2-4-8
                num -= Integer.parseInt(sub[i]);  
            }  
            sum += num; // 正数或负数结果 加到 总和上  
        }  
        if(sum == 110){  
            System.out.println(str);  
        }  
    }  
}  

1 个回复

正序浏览
楼主辛苦了,赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马