博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(Relax njuptoj)1009 数的计算(DP)
阅读量:4555 次
发布时间:2019-06-08

本文共 872 字,大约阅读时间需要 2 分钟。

其实DP 的关键在于找到子问题的结构。 
我们规定arr[i][j]为在j左边填写i时的数的个数,很明显: 
arr[i][j]=a[0][i]+a[1][i]+...+arr[i/2][i](i<=j/2) 
我们首先规定 
arr[0][t]=1(0<=t<=n,n为输入的自然数),因为左边填0时就为本数,数的个数当然为1. 

按照子问题结构,先解子问题,再得到原问题的解。 

 

/* * zy_1009.cpp * *  Created on: 2013年12月15日 *      Author: Administrator */#include 
using namespace std;const int maxn = 1005;int a[maxn][maxn];int n;void prepare(){// memset(a,0,sizeof(a)); int i,j; for(i = 0 ; i <= 500 ; ++i){ for(j = 0 ; j <= 1000 ; ++j){ a[i][j] = 0; } } for(i = 1 ; i < maxn ; ++i){ a[0][i] = 1; } int k; for(i = 0 ; i <= n ; ++i){ for(j = 1 ; j <= i/2 ; ++j){ for(k = 0 ; k < j ; ++k){ a[j][i] += a[k][j]; } } }}int main(){ while(scanf("%d",&n)!=EOF){ prepare(); int sum = 0; int i; for(i = 0 ; i <= n/2 ; ++i){ sum += a[i][n]; }// printf("%d\n",sum); cout<
<

 

 

转载于:https://www.cnblogs.com/riasky/p/3476511.html

你可能感兴趣的文章
JS中的逻辑运算符&&、||,位运算符|,&
查看>>
vue-resource和axios区别
查看>>
Vue.js中 watch(深度监听)的最易懂的解释
查看>>
Three.js加载gltf模型
查看>>
js中的web加密
查看>>
关于各种文件用Editplus的方式打开出现“向程序发送命令时出现问题”的解决方法...
查看>>
[Codeforces261D]Maxim and Increasing Subsequence——树状数组+DP
查看>>
理解API和SDK的区别
查看>>
64. [Mcoi2018]终末之诗(上)
查看>>
关于进程的上下文切换
查看>>
你不知道的JS(作用域和闭包)
查看>>
[恢]hdu 1164
查看>>
vs2013 安装boost1.59
查看>>
[恢]hdu 2503
查看>>
调用动态库时声明的参数个数不一致导致的问题
查看>>
003 Python与类C语言的区别(未完)
查看>>
tomcat eclipse mysql 安装
查看>>
Linux查看CPU和内存使用情况[转]
查看>>
Delegte的BeginInvoke
查看>>
jQuery设计思想
查看>>