【每天一道算法题】心情完全是-|sinx|状的正弦函数思密达 托腮。。。
2013-01-07 01:24
316 查看
这两天木有做题却存了几题,挑了一个看起来最有乐趣的~
烦躁的时候做个题能平静下来,是不是有点变态= =
这是一道微策略的笔试题:
输入一个数字组成的字符串,插入+,-或者空格,使得表达式结果为0
比如 123可以插入成 1+2-3
或者173956插入成 1 7+3 9-5 6
写出递归和非递归版本
思路:
看了题的第一感觉,感觉应该类似三叉树的搜索,用深度优先搜索可以找到某个使结果为0的表达式,但是复杂度达到了3 ^ ( n - 1 )。。。不科学
那么怎么简化或者说去除若干不可能的情形呢,如果前面的表达的绝对值大于后面连续的数字,就是比方前面的那个例子中:173+9 > 56 那么不论5和6之前插入什么都是不可能为0了,那么可以简化一部分搜索,但是本质上来说好像也没什么改进。。。
那好像可以用一下动规?虽然节省了重复的计算,但是还是要对于小规模的问题可能得到的各个值进行一番搜索,搜索的次数等于原先计算的次数,而且还浪费了空间。
怎么都想不出来。。。看来微策略是进不去了TAT,躺到床上再想一想。。。
据说12点以后睡是不要脸 3点以后睡是不要命 最近天天不要脸 偶尔不要命 faint
烦躁的时候做个题能平静下来,是不是有点变态= =
这是一道微策略的笔试题:
输入一个数字组成的字符串,插入+,-或者空格,使得表达式结果为0
比如 123可以插入成 1+2-3
或者173956插入成 1 7+3 9-5 6
写出递归和非递归版本
思路:
看了题的第一感觉,感觉应该类似三叉树的搜索,用深度优先搜索可以找到某个使结果为0的表达式,但是复杂度达到了3 ^ ( n - 1 )。。。不科学
那么怎么简化或者说去除若干不可能的情形呢,如果前面的表达的绝对值大于后面连续的数字,就是比方前面的那个例子中:173+9 > 56 那么不论5和6之前插入什么都是不可能为0了,那么可以简化一部分搜索,但是本质上来说好像也没什么改进。。。
那好像可以用一下动规?虽然节省了重复的计算,但是还是要对于小规模的问题可能得到的各个值进行一番搜索,搜索的次数等于原先计算的次数,而且还浪费了空间。
怎么都想不出来。。。看来微策略是进不去了TAT,躺到床上再想一想。。。
据说12点以后睡是不要脸 3点以后睡是不要命 最近天天不要脸 偶尔不要命 faint
相关文章推荐
- 校招准备系列:每天一道算法题(13)-斐波那契数列
- 每天一道算法题(三)找出最长的回文子字符串
- 每天一道算法题(38)——二叉树的非递归遍历
- 每天一道算法题(4)——O(1)时间内删除链表节点
- 每天一道算法题(七)Leetcode – Word BreakII (Java)
- 每天一道算法题(8)——把二元查找树转变成排序的双向链表
- 每天一道算法题—Day 1
- 每天一道算法题(14)——N个降序数组,找到最大的K个数
- 每天一道算法题--单链表的相关操作
- 每天一道算法题目(17)——二叉树的子结构
- 每天一道算法题(19)——最近公共父节点问题
- 每天一道算法--经典兔子繁殖迭代问题(斐波那契数列)
- 【每天一道算法题】恍如隔世
- 每天一道算法题——用两个栈实现队列和用两个队列实现栈
- 每天一道算法题(1) ——不用乘除法求和1+2+…+n
- 每天一道算法题(26)——输入字符串表达式求值
- 每天一道算法题(38)——二叉树的非递归遍历
- 每天一道算法题(4)——O(1)时间内删除链表节点
- 每天一道算法题10 找出数组中两个只出现一次的数字
- 校招准备系列:每天一道算法题(2)