您的位置:首页 > 其它

递推DP URAL 1260 Nudnik Photographer

2015-05-09 15:30 316 查看
题目传送门

 /*
递推DP: dp[i] 表示放i的方案数,最后累加前n-2的数字的方案数
*/
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;

const int MAXN = 1e4 + 10;
const int INF = 0x3f3f3f3f;
int dp[60];

int main(void)        //URAL 1260 Nudnik Photographer
{
//freopen ("G.in", "r", stdin);

int n;
while (scanf ("%d", &n) == 1)
{
memset (dp, 0, sizeof (dp));
dp[1] = 1;
for (int i=2; i<=n; ++i)
{
dp[i] = dp[i-1];
if (i > 3)
{
dp[i] += dp[i-3];
}
}

long long ans = dp
;
if (n > 2)
{
for (int i=1; i<=n-2; ++i)    ans += dp[i];
}
printf ("%I64d\n", ans);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: