题目
输入一个正整数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
代码
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
string Int2Str(int num){
string str;
if(num == 0){
str = '0';
return str;
}
int tmp = num;
while(num){
str.insert(str.begin(),num % 10 + '0');
num /= 10;
}
return str;
}
void helper(vector<int> &num,int index,int x,int result,int sequence,int &count,string op){
if(index == num.size()){
if(result + sequence == x || result - sequence == x){
++count;
if(result + sequence == x){
op += "+"+Int2Str(sequence);
}
else{
op += "-"+Int2Str(sequence);
}
cout<<op<<endl;
}
return;
}
helper(num,index+1,x,result,sequence * 10 + num[index],count,op);
if(op.size() > 0){
helper(num,index+1,x,result + sequence,num[index],count,op+"+"+Int2Str(sequence));
}
else{
helper(num,index+1,x,result + sequence,num[index],count,op+Int2Str(sequence));
}
if(op.size() > 0){
helper(num,index+1,x,result - sequence,num[index],count,op+"-"+Int2Str(sequence));
}
}
int TransformationEquation(vector<int> num,int x){
int count = 0;
string op = "";
helper(num,1,x,0,num[0],count,op);
return count;
}
int main(){
int n,x;
int num;
while(cin>>n>>x){
vector<int> vec;
for(int i = 0;i < n;++i){
cin>>num;
vec.push_back(num);
}
cout<<TransformationEquation(vec,x)<<endl;
}
return 0;
}
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
华为机试一霸教你过华为机试演讲稿..pdf
华为机试真题(非牛客网试练题)OD考试真题,不定期更新,文档含代码解答
华为OD机试(..75.rar
收集整理华为机试108题,目录清晰,内涵C、C++答案 适合初中级练手学习,短时突击
华为机试一霸教你过华为机试。大菊厂招聘有三关,心理测试,机试,面试。
华为机试一霸教你过华为机试.doc
华为OD机试真题整理合集
(43条消息) 华为OD机试真题2023(JAVA&JS)_华为机试真题_若博豆的博客-CSDN博客.mhtml
华为 OD 机试真题 机试题专栏 题目来自牛客平台机考同学的机试分享,题目描述信息可能记录不完整,题解无法保证通过率,只提供结题思路,注意!注意!!不要直接使用博主代码进行机考! 欢迎加微信: Ayemmar 本文...
华为机试一霸教你过华为机试e-18页.pdf
华为OD系列--华为OD机试
本人在准备2014年华为机试的时候,进行整理的,代码全部运行成功。如有错误,请大家见谅。
华为机试(Python)真题Od.docx
华为OD机试真题是华为公司用于筛选人才的一种方式,通过这种方式,华为公司可以更好地了解应聘者的技能和能力,从而更好地选择合适的人才。在华为OD机试真题中,应聘者需要解决一系列的问题,包括算法、数据结构、...
华为机试算法题总结 经验分享
自己编写的加别人编写的程序。辛苦了好久!
里面有几十道华为历届考过的机试题,可供大家研究和参考,主要是里面的思想,只要理解透了里面的思想,非常有助于机试。
华为机试成功归来,与小伙伴们分享下经验
2014重邮华为机试(2013.9.14和2013.9.15)一共三场的题目
。。。