蓝桥杯2014年C\C++A组-切面条 - sbw Blog

蓝桥杯2014年C\C++A组-切面条

来源: 石博文博客 | 浏览: 3835 | 评论: 0 发表时间: 2014-03-22

一根面条,从中间切一刀,可以得到2根,若先对折一下再切,可以得到3根,若对折2次再切,可以得到5根面条,现在问若对折10次后再切,可以得到几根面条?



解题思路

切面条时, 切开的面条只会有2种情况:1是成为独立的面条,2是会和其它面条相连,那么,现在把和其它面条的称之为一个'结',当不计算这些'结'时,折了几次之后切完面条应该为2^(n+1)根:


下来,再计算'结'的个数,由于一个'结'存在之后就不会消除,所以下一状态'结'数量就是当前结数量 + 对折后创造的'结'数量.而对折后创造的'结'数量就是当前面条的根数:


最后,由于1个结相连了两根面条,所以当折了N次后,面条根数就是总共面条数 - 结数量:


答案就是1025根面条~




没有人评论过此文,还不快抢个沙发
  • 昵称: *
  • 邮箱:
  • 网址:
  • 记住我的信息
  • Color
  • Red
  • Blue
  • Code
  • bash
  • cpp
  • css
  • java
  • js
  • perl
  • php
  • python
  • ruby
  • sql
  • xml