URAL:1017 Staircases

01背包计数问题。

这类问题非常经典,很多问题都可以转化为背包类的计数问题。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <algorithm>
#define ll long long
#define INF 2139062143
#define MAXN 100005
using namespace std;
ll dp[505];
int main()
{
    dp[0]=1;
    for(int i=1;i<=500;++i)
        for(int j=500;j>=i;--j)
        dp[j]+=dp[j-i];
    int n;
    while(scanf("%d",&n)!=EOF)
        printf("%lld\n",dp[n]-1);
    return 0;
}


 

你可能感兴趣的:(URAL:1017 Staircases)