码迷,mamicode.com
首页 > 其他好文 > 详细

九度[1084]整数拆分

时间:2016-01-31 21:38:02      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

 1 #include <iostream>
 2  
 3 using namespace std;
 4  
 5 int dp[1000001];
 6  
 7 int main() {
 8     int n;
 9     while (cin >> n) {
10     dp[1] = 1;
11     dp[2] = 2;
12     for (int i = 3; i <= n; ++i) {
13         if (i % 2 == 1)
14             dp[i] = dp[i - 1];
15         else
16             dp[i] = dp[i - 1] + dp[i / 2];
17         dp[i] %= 1000000000;
18     }
19     cout << dp[n] << endl;
20     }
21  

摘抄:i 为 奇数时,拆分跟前面的i-1是一样的,自己写几组就知道了,不用多说。关键是 i 为偶数时:当拆分中不含1时,则拆分情况最小分到2,则拆分情况跟i/2是一一对应的;当拆分中含有1时,先把这个1拿出来,剩下的i-1进行拆分,情况跟i-1的拆分时一一对应的;而这两种拆分情况是互不相交的(因为一种没1,一种有1),则加起来就是 i 为偶数时的拆分情况。

好方法,自己就想不到 呜呜

九度[1084]整数拆分

标签:

原文地址:http://www.cnblogs.com/dreamer123/p/5173833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!