阿里巴巴笔试题_身高排队问题

Posted on

阿里巴巴笔试题_身高排队问题

您还未登录 ! 我的应用 登录 注册

JavaEye-最棒的软件开发交流社区

论坛首页招聘求职版求职经验

阿里巴巴笔试题_身高排队问题

全部 企业点评 职场话题 求职经验 面试秘籍 招聘职位

浏览 248 次 主题:阿里巴巴笔试题_身高排队问题

精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0) 作者 正文 * thinke365

  • 等级: 初级会员
  • thinke365的博客
  • 文章: 9
  • 积分: 90
  • 来自: 杭州
  • 发表时间:前天

相关文章:

  • 趣味编程:24点算法实现
  • 2006百度之星程序设计大赛试题-变态比赛规则(解答)
  • 来来来,有兴趣的人便来战这算法题吧: 推荐圈子: Pipboy 更多相关推荐 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 假定这12个人各自有自己的编号,即1、2、3... 11、12. 并且编号1到编号12所代表的人身高是递增的。 解这道题基于观察发现的如下规律: a、第一排第一个人必定是1. b、第一排第二个位置的可选值是2、3,第一排第三个位置的可选值是3、4、5,...,第一排第6个人的可选值是6、7、8、9、10、11 c、第一排的数字确定后,第二排的顺序可以唯一确定。因为剩下的6个数字只能递增排列(显然只有一种结果),所以只需确定第一排的所有排列可能就行了。 如下是解题的最初实现方法。采用穷举法实现。 /#include using namespace std; /#include /#include // 后来发现不需要记录路径中现有节点。因为数字本身存在偏序的问题,往上涨就行了 set path; vector> marks; int getCount(int depth, int max) { if(depth==marks.size()) { int flag=0; for(int i=0; imax) { flag ++; } } return flag; } int count = 0; for(int i=0;imax) { count += getCount(depth+1,marks[depth-1][i]); } } return count; } int main() { int n; while(cin>>n) { marks.clear(); for(int i=1; i<=n/2; i++) { vector node; for(int j=0;j<i;j++) { node.push_back(i+j); } marks.push_back(node); } cout << getCount(1, 0) << endl; } return 0; } 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。

推荐链接

论坛首页招聘求职版求职经验 跳转论坛:Java编程和Java企业应用 Web前端技术:AJAX和RIA 移动编程和手机应用开发 C/C++编程 Ruby编程 Python编程 PHP编程 Flash编程 Microsoft .Net 综合技术 软件开发和项目管理 行业应用 入门讨论 招聘求职 海阔天空

© 2003-2009 JavaEye.com. All rights reserved. 上海炯耐计算机软件有限公司 [ 沪ICP备05023328号 ]

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途