2015-03 (不懂)

Posted repinkply

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2015-03 (不懂)相关的知识,希望对你有一定的参考价值。

等式变换
输入一个正整数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

//动态规划
//动态方程(有点难理解):当前种类=符号位加号+符号为减号+没有符号的种类
//dp(before,des,n,ex)= dp(before - 1, before, res + des,1) + dp(before - 1, before, res - des,1) + dp(before - 1, before*pow(10, ex)+des, res,ex+1);
// before: 需要判定的符号前面的数字的个数,初始为8
// des: 需要判定的符号后面的数字,初始为9
// n:方程右边的结果
// ex:阶乘数,因为符号有三种可能,加号,减号,或者没有,如果没有,那么ex就用于计算当前值
#include<iostream>
#include<cmath>
using namespace std;
int dp(int before, int des, int res,int ex) {
    if (before == 0) {
        if (des == res) {
            return 1;
        }
        else {
            return 0;
        }
    }
    else {
        return dp(before - 1, before, res + des,1) + dp(before - 1, before, res - des,1) + dp(before - 1, before*pow(10, ex)+des, res,ex+1);
    }
}
int main(){
    int n; cin >> n;
    cout << dp(8,9,n,1);

}

 

以上是关于2015-03 (不懂)的主要内容,如果未能解决你的问题,请参考以下文章

如何在片段中播放视频

找到我的自定义代码片段 Xcode 6?

Facebook状态回调不适用于片段

iOS常用于显示几小时前/几天前/几月前/几年前的代码片段

切换到特定片段会产生奇怪的 java.lang.NullPointerException

我的 Android 应用程序的片段或活动