填加减运算符算法

给定一个整数数组,和一个单独的数字,在数组的每一个元素中间填加 "+"或"-" 使其运算结果等于单独的数字例如给定的数组为{7 2 4} ,数字为 9。运算结果为7-2+4=9    


规则1:数组中元素的位置不能变化。

规则2:如果无法实现则输出 Invalid


举例:

Input:

1 2 3 4 10
1 2 3 4 5

Output:

1+2+3+4=10
Invalid


我的算法是:

1、将所有数字和要求结果累加,如果结果为奇数,则直接输出无结果;
2、将数字按照将序由左向右排列;
3、将所有数字前全部填“+”;
4、由最小数字开始往左填“-”,并计算结果是否小于或等于要求结果,如果大于要求结果,则继续将左侧下一个数字填“-”,并再次计算;如果等于要求结果,则直接按照填写的加减号输出结果;如果小于结果,则记录下填写“-”的个数;
5、从2的“-”个数次方开始循环,步长为1,到2的所有数字个数次方,将每个数字转化为二进制字符串,用这个字符串来代表每个数字前的加减号,“0”代表正数,“1”代表负数,例如:五个数字,分别为5、4、3、2、1;计算的的二进制串是101,则每个数字的正负号按照顺序为+5,+4,-3,+2,-1;
6、累加所有数字,如果结果为要求的结果则将数字的正负号填入未排序的数字的加减号位并输出,如果不是则,恢复所有数字为正数,继续循环下一个二进制字符串;
7、通过递归方法重复1-6步运算,从而实现分段的排除不需要计算的运算;
注:如果log(每次循环的数字,2)是一个整数,则将结果减去二进制串中字符为1的所有左侧数字生成新的结果,并将右侧数字再次重复步骤4-6;

程序代码正在编写中.......;欢迎留言


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值