在1-9这9个数之间填上+或-,使结果等于目标值(华为机试)
来源:互联网 发布:java linux 文件上传 编辑:程序博客网 时间:2024/06/05 15:45
题目来源:华为机试题,难题!
主要思想:深搜,不多把问题简化,知道只剩下一个元素或者不剩下。也算是减而治之。
机试的时候只要求求出有几个即可,我在写的时候把符号都填出来了,存在resultNum中,再次感到C++STL的强大!!!
#include<iostream>#include<vector>using namespace std;int result=0;vector<vector<int> > resultNum;vector<int> resultTemp;//这个算法是可以在最前面加符号的算法,如://-12+3+45-6+78-9=99(没有后面注释掉的if语句)void sumResult(int A[],int n,int target,int nowValue){if(n==0 && nowValue==target){resultNum.push_back(resultTemp);result++;return;}if(n==1){if(nowValue+9==target || nowValue-9==target){int num=nowValue+9==target?9:-9;resultTemp.push_back(num);resultNum.push_back(resultTemp);resultTemp.pop_back();result++;}return;}int addNum=0;for(int i=1;i<=n;i++){addNum=addNum*10+A[i-1];resultTemp.push_back(addNum);sumResult(A+i,n-i,target,nowValue+addNum);resultTemp.pop_back();if(n!=9)//加上这一句以后,第一个数前面不能加运算符,即始终为+{resultTemp.push_back(-addNum);sumResult(A+i,n-i,target,nowValue-addNum);resultTemp.pop_back();}}}int main(){int A[9]={1,2,3,4,5,6,7,8,9};sumResult(A,9,99,0);cout<<result<<endl;system("pause"); return 0;}
0 0
- 在1-9这9个数之间填上+或-,使结果等于目标值(华为机试)
- C++编程趣题1 在1~9中间填符号使运算结果等于100
- 在1,2,…,9(保持这个顺序)之间可任意放+或-或都不放使其结果等于100
- 【华为机试题】请在123456789之间添加+号或者-号,也可以什么都不填,使得等式的运算结果等于a。要求程序输出等式成立的个数b。测试用例:a=5时,b=21。
- 2个数和等于一个目标值-leepcode
- 123456789这九个按顺序排列的数,要求在它们之间插入若干个+,-,*,/ ,使其结果正好等于100如 : 1*2*3*4+5+6+7*8+9=100。c++一解
- 在1、2、3...9(保持这个顺序)之间可任意放+或者-或者不放,使其结果等于100,输出所有可能的放法。js写法
- 递归实现1-9之间添加"+"或"-"或""使得运算结果为100
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序
- (scala实现) 在1到9(顺序不能变)之间插入+或-或什么都不插入,使得计算结果总是100
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序
- 两数之和等于目标值
- 1到9填在9个格子中,让横竖斜的3个数相加都相等
- 随机算法,在1-9(1 2 3 4 5 6 7 8 9)中添加加减乘除使结果等于100
- 利用回溯法解决1-9之间添加"+"或"-"或""使得运算结果为100的问题
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是 100 的程序,并输出所有的可能性。
- 项目所用框架,关于框架的理解
- T_SQL 将一列多行数据合并为一行
- 计数排序
- SpringMVC容器初始化篇----ContextLoaderListener
- filter实例
- 在1-9这9个数之间填上+或-,使结果等于目标值(华为机试)
- 1012 u Calculate e
- 浅谈“写作”
- Spring定时器的两种实现方式
- Sensor框架理解
- Android ContentProvider使用详解
- 在head里的CSS link 居然粗现在body里了?
- zend studio 卡在 loading workbench
- linux 常用命令整理