zoukankan      html  css  js  c++  java
  • 等式变换

    输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。
    1 2 3 4 5 6 7 8 9 = X
    比如:
    12-34+5-67+89 = 5
    1+23+4-5+6-7-8-9 = 5
    请编写程序,统计满足输入整数的所有整数个数。
    输入:       正整数,等式右边的数字
    输出:       使该等式成立的个数
    样例输入:5
    样例输出:21

        public static void main(String[] args) {
            char[] operas=new char[9];
            new Main().dfs(0, 1, ' ', 0, operas, 5);
        } 
        
        public void dfs(int result,int layer,char lastOperation,int lastNumber,char[] operas,int target)
        {
            //本次需要加上的数
            lastNumber*=10;
            lastNumber+=layer;
            if(layer==9)
            {
                result+=('-'==lastOperation?(-1*lastNumber):lastNumber);
                if(result==target)
                {
                    StringBuilder stringBuilder=new StringBuilder();
                    for(int i=1;i<9;i++)
                    {
                        stringBuilder.append(i);
                        if(operas[i]!=' ')
                            stringBuilder.append(operas[i]);
                    }
                    stringBuilder.append(9);
                    System.out.println(stringBuilder.toString());
                }
                return;
            }
            operas[layer]=' ';
            //本次不做加减运算
            dfs(result, layer+1, lastOperation, lastNumber, operas,target);
            result+=('-'==lastOperation?(-1*lastNumber):lastNumber);
            //plus
            operas[layer]='+';
            dfs(result, layer+1, '+', 0, operas,target);
            //minus
            operas[layer]='-';
            dfs(result, layer+1, '-', 0, operas,target);
        }

     输出

    12-34+5-67+89
    1+23+4-5+6-7-8-9
    1+2+34-56+7+8+9
    1+2+3+4-5+6-7-8+9
    1+2+3+4-5-6+7+8-9
    1+2+3-4+5+6-7+8-9
    1+2-3+4+5+6+7-8-9
    1+2-3-45+67-8-9
    1+2-3-4+5-6-7+8+9
    1+2-3-4-5+6+7-8+9
    1-23+45+6-7-8-9
    1-23+4+5-6+7+8+9
    1-23-4-56+78+9
    1-2+3+4-5-6-7+8+9
    1-2+3-4+5-6+7-8+9
    1-2+3-4-5+6+7+8-9
    1-2-34-56+7+89
    1-2-3+4+5+6-7-8+9
    1-2-3+4+5-6+7+8-9
    1-2-3-4-56+78-9
    1-2-3-4-5-6+7+8+9
  • 相关阅读:
    ubuntu使用squid搭建代理
    CentOS 7 安装配置带用户认证的squid代理服务器
    Squid配置之使用帐号密码验证
    Centos 7 关闭selinux and firewall
    linux虚拟机桥接网络配置
    常用插件html
    nodejs express 上传文件自定义文件名和上传路径
    nodejs express 部署
    centos7 mysql 各种报错
    centos7通过yum安装JDK1.8
  • 原文地址:https://www.cnblogs.com/maydow/p/4571781.html
Copyright © 2011-2022 走看看