bzoj.org P07255 数字的拆分之二

Description

将数字N进行拆分.拆分出来的数字可以重复使用.

Format

Input

每一行给出一个数字N,3<=N<=500.整个测试以0代表结束.

Output

拆分的种数.

这道题,看似变态难写,实则。。。

一道******题。

(观众:哇。。。。。。)

这题是个简简单单的dp!

N就是背包容量,但是物品体积在哪捏???

就是1~n的每个数嘛。。。。。。

解决这些问题后,就简单了!

tip:十年OI一场空,开了 long long 见祖宗!!!一定得开 unsigned long long!

点击查看代码
#include<bits/stdc++.h>
#define rep(i,a,b) for(long long i=a;i<=b;i++)
#define pep(i,a,b) for(long long i=a;i>=b;i--)
#define debug(a) cout<<#a<<"="<<a<<endl;
using namespace std;
unsigned long long n;
unsigned long long dp[505];
int main()
{
  while(cin>>n&&n!=0)
  {
  	memset(dp,0,sizeof(dp));
    dp[0]=1;
    rep(i,1,n)
    {
  	  rep(j,i,n) dp[j]+=dp[j-i];
    }
    cout<<dp[n]<<endl;
  }
  return 0;	
}
有兴趣的看看这两题:

https://www.cnblogs.com/LuoCR2012/p/18253106

https://www.cnblogs.com/LuoCR2012/p/18253108

posted @ 2024-06-17 17:52  OI_LuoCR  阅读(22)  评论(0)    收藏  举报