• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小比丘
博客园    首页    新随笔    联系   管理    订阅  订阅
2012年11月14日
一道人人的笔试题
摘要: 2012.10.12下午在交大参加的笔试,记得其中一道题大概是:1 int f(int x,int y)2 {3 if(x<0||y<0) return 0;4 if(x==0||y==0) return 1;5 return f(x-1,y)+f(x,y-1);6 }1)计算f(8,8)的值2)怎么改进函数,降低时间复杂度?当时,第一问,直接一步步迭代算,算了半天,没算出来,将中间过程写出来了,第二问,当时想的是应该是将递归改为非递归,但不知道怎么改,没写!其实这不是在考编程,而是在考数学,再细说,就是在考杨辉三角。以f(3,3)为例,如下图,其展开系数就是杨辉三角的... 阅读全文
posted @ 2012-11-14 22:02 小比丘 阅读(526) 评论(0) 推荐(0)
如果一个正整数可以由连续正整数求和而来,输出所有可能的组合
摘要: 在写《判断一个正整数是否可以由连续正整数求和而来》的过程中,看到很多正整数n,可以用不止一组的连续正整数求和而来,如9=2+3+4=4+5,那么怎么求得所有符合要求的区间呢?我还是使用《判断一个正整数是否可以由连续正整数求和而来》提到的模拟法,只是在找到一个符合要求的区间之后,并不返回,而是强制它向右滑动,继续搜索可能的区间。注意搜索只在[1,n]的前半段(即[1,(n+1)/2])进行,因为后半段任意两个数的和都大于n。看代码:View Code 1 #include <iostream> 2 using namespace std; 3 4 //模拟法 5 //用一个在数轴上的 阅读全文
posted @ 2012-11-14 18:42 小比丘 阅读(1362) 评论(0) 推荐(0)
判断一个正整数是否可以由连续正整数求和而来
摘要: 58同城面试遇到的问题,判断一个正整数n是否可以由连续正整数求和而来。我没回答上来,面试官给了提示,回来自己想想,觉得有两种方法:模拟法:用一个在数轴上的滑动窗(即一个正整数区间),来模拟求解过程。具体来说,如果滑动窗内整数的和小于n,则滑动窗右边界向右移动,如果滑动窗内整数的和大于n,则滑动窗左边界向右移动,如果滑动窗内整数的和等于n,则n可以由滑动窗内的整数求和表示,程序终止。数学分析法:可以证明(证明在本文最后),如果n可以表示为:n=(2*m+1)*2k,m, k>=0;则m>0时,n可以由连续正整数求和而来,m=0时,n不可以由连续正整数求和而来。实际上,正整数中,只有2 阅读全文
posted @ 2012-11-14 16:47 小比丘 阅读(2189) 评论(0) 推荐(1)
计算用字符串表示的整数四则运算的值
摘要: 昨天晚上写完《计算用字符串表示的个位数四则运算的值(栈)》,自己给自己留了个问题?即,怎样计算用字符串表示的整数四则运算的值。这里增加了两个难度,整数的位数不再是一位,而且表达式中可以含括号。下面给出代码:View Code 1 #include <iostream> 2 using namespace std; 3 4 const int MAX=100; 5 6 typedef struct node * pointer; 7 typedef struct node{ 8 bool isNumber; 9 int value; 10 poin... 阅读全文
posted @ 2012-11-14 00:30 小比丘 阅读(716) 评论(0) 推荐(0)
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3