2014华为面试题
来源:互联网 发布:日本女演员知乎 编辑:程序博客网 时间:2024/06/02 05:12
描述: 输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。
1 2 3 4 5 6 7 8 9 = X
比如:
12-34+5-67+89 = 5
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
请编写程序,统计满足该输入整数的所有等式的个数。
思路:考虑每个间隔的三种可能,并对剩余元素进行递归调用count函数,
firstNum:表示当前所计算元素的首个元素值(并不一定是NumList[0]);
numList:表示当前所剩余元素集合,
x:表示当前利用剩余元素集合生成的目标值(可正可负也可能为零);
n:表示剩余元素个数
int count(int firstNum,int numList[],int x,int n){//思路,每个空格之间有三种可能,+/-/' ',如何进行处理,//printf("%d",numList[0]);if (n == 1){if (x == firstNum)return 1;elsereturn 0;}else//对num中的元素进行组合,使得其结果 == x,对数组中的首个元素和其之后的内容进行组合{int count1 = count(numList[1],numList + 1,x - firstNum,n - 1);//+int count2 = count(numList[1],numList + 1,firstNum - x,n - 1);//-firstNum = firstNum * 10 + numList[1];//将首个元素与第二个元素直接合并,不添加操作符int count3 = count(firstNum,numList + 1,x,n - 1);return count1 + count2 + count3;}}测试代码:
int result = count(1,numList,5,9);printf("%d\n", result);
0 0
- 2014华为面试题
- 华为java华为面试题
- 华为面试题
- 华为面试题(转载)
- 华为一道面试题
- JAVA华为面试题
- 华为面试题
- 华为面试题1
- 华为网络工程师面试题
- 华为面试题
- 华为面试题
- 华为面试题
- 华为面试题
- 华为面试题
- 华为面试题
- 一道华为面试题
- 华为面试题
- java华为面试题
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
- OpenCV Demo——core模块(1)图像读取与显示
- matlab将矩阵数据归一化到[0,255]
- 搭建并行计算微机集群介绍
- 计算几何算法基础————判断线段相交
- 2014华为面试题
- 使用的mysql语句汇总
- 【UI特效】FrameLayout实现ListView顶部悬停效果
- 狐言:王阳明心学、量子物理、心外无物的乱弹
- Java程序验证日期格式
- IOS 本地推送消息以及进入后台继续推送
- poj 2538 WERTYU
- fzoj 1320 Ones(动态规划:水题)
- 黑马程序员-----JAVA面向对象(二)