程设模拟考 E:踩方格
题目见此:http://cxsjsx.openjudge.cn/2013weekend5a/E/
解题思路:
- 第一反应当然是模拟,但后来一想其实不用,每个节点只有两种情况:拓展出2个或3个节点,只需要记录下这两种节点的数目即可
- 用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 }
浙公网安备 33010602011771号