Ignatius and the Princess III HDU - 1028

整数划分问题

假的dp(复杂度不对)

 #include<cstdio>
#include<cstring>
typedef long long LL;
LL ans[][];
LL n,anss;
LL get(LL x,LL y)
{
if(ans[x][y]!=-) return ans[x][y];
if(y==) return ans[x][y]=;
if(x<y) return ans[x][y]=;
ans[x][y]=;
LL i;
for(i=;i<=y;i++)
ans[x][y]+=get(x-y,i);
return ans[x][y];
}
int main()
{
memset(ans,-,sizeof(ans));
ans[][]=;
while(scanf("%lld",&n)==)
{
anss=;
for(int i=;i<=n;i++) anss+=get(n,i);
printf("%lld\n",anss);
}
return ;
}

一般的dp

ans[i][j]表示把i拆成最大j的数的方案数。要么分配一个j(剩下ans[i-j][j]),要么一个也不分配(剩下ans[i][j-1])。

参考

 #include<cstdio>
#include<cstring>
typedef long long LL;
LL ans[][];
LL n,anss;
LL get(LL x,LL y)
{
if(ans[x][y]!=) return ans[x][y];
if(y==) return ;
if(x<y) return ans[x][y]=get(x,x);
return ans[x][y]=get(x-y,y)+get(x,y-);
}
int main()
{
ans[][]=;
while(scanf("%lld",&n)==)
printf("%lld\n",get(n,n));
return ;
}

甚至可以写成这样

 #include<cstdio>
#include<cstring>
typedef long long LL;
LL ans[][];
LL n,anss;
LL get(LL x,LL y)
{
if(x<) return ;
if(ans[x][y]!=) return ans[x][y];
if(y==) return ;
return ans[x][y]=get(x-y,y)+get(x,y-);
}
int main()
{
ans[][]=;
while(scanf("%lld",&n)==)
printf("%lld\n",get(n,n));
return ;
}

母函数做法

参考

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
LL n;
LL ans[][];//ans[i][j]存的是到第i个多项式为止指数为j的项数
int main()
{
LL i,j,k;
while(scanf("%lld",&n)==)
{
memset(ans,,sizeof(ans));
ans[][]=;
for(i=;i<=n;i++)
for(j=;j<=n;j+=i)
for(k=;k<=n-j;k++)
ans[i][k+j]+=ans[i-][k];
printf("%lld\n",ans[n][n]);
}
return ;
}

最新文章

  1. 看完《Thinking in Java》后,我觉得自己就是一个不懂编程的小孩子,如何快速摆脱这种自卑感
  2. VS2013菜单栏文字全大写的问题
  3. JavaScript思维导图—函数基础
  4. poj2420A Star not a Tree?(模拟退火)
  5. linux epoll模型
  6. Spring—请求映射之URL路径映射
  7. Unity IOC注入详细配置(MVC,WebApi)
  8. PHP类
  9. 花了一年时间开发的弯管机YBC编程软件
  10. 手把手封装数据层之DButil数据库连接的封装
  11. HTTP结构
  12. Django使用forms来实现评论功能
  13. djangoの2
  14. STL next_permutation 算法原理和自行实现
  15. cache 基本原理
  16. python 字符串编码解码和格式化问题
  17. Qt画笔实现波形区域图
  18. 解决IIS7下主机名灰色无法修改问题
  19. php输出js到前端
  20. &lt;c:if&gt;&lt;/c:if&gt;用法-转载

热门文章

  1. 基于unicorn-engine的虚拟机的实现(WxSpectre)
  2. C++:vector中的resize()函数 VS reserve()函数
  3. Eureka 简介
  4. HDU OJ Max sum 题目1003
  5. Office WORD WPS如何设置PPT播放全屏
  6. react-document-title
  7. Node 即学即用 笔记 思维导图
  8. Codeforces466C Number of Ways
  9. Matlab遗传算法优化问题求解的演示样例代码
  10. 树莓派 mongodb 安装&amp;报错处理