赞
踩
题目:有一个含有n个1-9的数字,在中间加m个加号,求最小的结果
思路:动态规化,利用递归,v(n,m)。
举个例子吧
12345
5个数字中加入2个加号,此时n=5,m=2
假设最后一个加号在4后面,则1+234+5或12+34+5或123+4+5
假设最后一个加号在3后面,则1+23+45 或 12+3+45,
假设最后一个加号在2后面,则1+2+345
看到共同点了吗,当把最后的加号加到第i个数字后面时,后面的数字就不变
如例1最后是加5,例2最后是加45,例3最后是加345
那么,接下来呢?
我们只需要按照这个原理递归求前面的的就行了
如例1就是求1234的最小值,例2就是求123的最小值,例3就是求12的最小值(中间一个加号)
以下是代码:
- #include <cstdio>
- #include <iostream>
- #include <algorithm>
- #include <cmath>
- #include <cstdlib>
- #include <cstring>
- #include <vector>
- #include <list>
- #include <map>
- #include <stack>
- #include <queue>
- using namespace std;
- #define
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。