程设模拟考 E:踩方格

题目见此:http://cxsjsx.openjudge.cn/2013weekend5a/E/

解题思路:

  1. 第一反应当然是模拟,但后来一想其实不用,每个节点只有两种情况:拓展出2个或3个节点,只需要记录下这两种节点的数目即可
  2. 用a表示拓展3个节点的数目,用b表示总数,所以b-a即为拓展2个节点的数目,用s表示拓展出来的节点的数目,即:s=(b-a)*2+a*3=2*b+a,下一次b=s即可

贴代码:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main()
 5 {
 6     int n;
 7     cin >> n;
 8     int a=1, b=3, s=b;
 9     while(--n)
10     {
11         s = b * 2 + a;
12         a = b;
13         b = s;
14     }
15     cout << s << endl;
16 }
View Code

 

posted on 2013-06-16 15:51  白~  阅读(182)  评论(0)    收藏  举报

导航