有一个由数字1-9组成的数字串(长度不超过200),问如何将M(1<=M<=200)个加号插入这个数字串中,使得所形成的算术表达式的值最小。
(1)加号不能加在数字串的最前面或最末尾,也不应有两个或两个以上的加号相邻;
(2)M的值一定小于数字串的长度。
例如:数字串79846,若需加入两个加号,则最佳方案是79+8+46,算术表达式的值为133。
/**
* Created by:SaToPenDragon
* Date:2019-11-20 15:44
* ClassName:add_plus
* Description: 算法分析与设计
*/
#include <cstdio>
#include <cmath>
int mArray[] = {7, 9, 8, 4, 6}; // 全局数组
const int inf = 0x7fffffff; // 定义一个“无穷大”
/**
* @param a:十进制数最高位数的索引
* @param b:十进制数个位数的索引
* @param array:
* @return int(s):十进制数
* @Description:求由array[a]~array[b]构成的十进制数
*/
int getNum(int a, int b, const int *array) {
double s = 0;
int index_num = b - a;
for (