算法面试题-阿里编程
2017-03-22 11:25
239 查看
题目没截图,口述大概吧。
给定一个表达式,和一个数组,表达式中有n个缺失,在数组中选择n个分别填入缺失中,使得等式成立。
例子:
3_*2=_2
1 3 6 8
输出:
31*2=62
选出的数不能重复,并且n不确定。
这个题目用Python做是非常简单的,因为Python有eval方法来计算表达式的值。这个题首先是一个深度优先搜索算法,可以用递归或者栈来做,递归的话就更简单了。
直接给代码:
递归的终止条件是表达式中不包含"_"符号,如果不包含,使用eval计算表达式左边的值,和右边进行比较,相等则输出。
如果表达式中还包含"_"符号,则遍历待选数字,替换掉表达式中的第一个"_"符号,接着去掉待选数字继续递归即可。
给定一个表达式,和一个数组,表达式中有n个缺失,在数组中选择n个分别填入缺失中,使得等式成立。
例子:
3_*2=_2
1 3 6 8
输出:
31*2=62
选出的数不能重复,并且n不确定。
这个题目用Python做是非常简单的,因为Python有eval方法来计算表达式的值。这个题首先是一个深度优先搜索算法,可以用递归或者栈来做,递归的话就更简单了。
直接给代码:
def search(exp, nums): if '_' not in exp or nums is None: exps = exp.split('=') if eval(exps[0]) == float(exps[1]): print exps[0]+'='+exps[1] return else: for num in nums: e = exp.replace('_', num, 1) ns = nums[:] ns.remove(num) search(e, ns) if __name__ == '__main__': exp = raw_input() nums = raw_input().split(' ') search(exp, nums)
递归的终止条件是表达式中不包含"_"符号,如果不包含,使用eval计算表达式左边的值,和右边进行比较,相等则输出。
如果表达式中还包含"_"符号,则遍历待选数字,替换掉表达式中的第一个"_"符号,接着去掉待选数字继续递归即可。
相关文章推荐
- 阿里算法面试题
- 算法和编程面试题
- java基础知识记录--算法与编程(摘自张孝祥整理java面试题)
- 面试题二-- 算法与编程
- 阿里面试题—最长公共子串算法
- 【算法】2015-2016 阿里、百度、360、豌豆荚、搜狗面试题部分集锦
- 结构之法 算法之道 面试题 9、编程实现两个正整数的除法 编程实现两个正整数的除法,当然不能用除法操作符。
- 面试题之算法与编程
- jvm内存模型-回收算法-和内存分配以及jdk、jre、jvm是什么关系(阿里,美团,京东面试题)
- [置顶] 阿里2017年-图形图像算法工程师-在线编程题目
- 算法和编程面试题
- java面试题之二:算法与编程
- 算法编程:共打了多少鱼?
- 微软面试、经典算法、编程艺术、红黑树4大系列总结
- 面试题(C#算法编程题)
- 程序员面试题精选100题(63)-数组中三个只出现一次的数字[算法]
- 九度OJ 1504 把数组排成最小的数【算法】-- 2009年百度面试题
- 面试题常见算法之等概率生成随机数
- 【算法编程】循环右移一个数组