核电站问题 动态规划
来源:互联网 发布:淘宝双11营业额 编辑:程序博客网 时间:2024/06/02 11:12
核电站问题
一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续M个坑中放入核物质,则会发生爆炸,
于是,在某些坑中可能不放核物质。
任务:对于给定的N和M,求不发生爆炸的放置核物质的方案总数。
输入描述 Input Description
输入文件只一行,两个正整数N,M( 2<=N<50,2≤M≤5)
输出描述 Output Description
输出文件只有一个正整数S,表示方案总数。
样例输入 Sample Input
4 3
样例输出 Sample Output
13
题解:
方法一:
从第一个坑开始放,开始dfs,每个坑都有两种可能,放或者不放,dfs(i,j)i第i个坑,j前i个坑最后j个坑都填了物质,若j达到m,则次方案不行,若没有m,继续
#include<stdio.h>int n,m,ans=0;int dfs(int i,int j){ if(j==m) return 0;//如果有连续的m坑都有物质,此方案不行 if(i==n) { ans++;//能到n,说明之前没有连续的m坑都有物质,此方案可以 return 1; } int ans=0; dfs(i+1,0);//第i+1个坑里没有物质,之后的坑里是否放物质与前面没有联系了 dfs(i+1,j+1);//前i+1个坑中最后连续j+1个坑里都有物质, }int main(){ int res; scanf("%d%d",&n,&m); dfs(0,0);//从第0个坑里开始放 printf("%d",ans); }
方二:
dp[n]表示在n个坑中,每个坑都有两种可能,放或者不放,但不能有连续m个坑里都有物质
从头开始向后放,每个坑都有两种可能,放或者不放
开头前i个连续的坑中都有核物质(0<=i<=m-1),则第i+1个坑必空。 i+1后面的坑再放和前面的就又没关系了
i=0时的放法为dp[n-1]; 在后n-1个坑中,每个坑都有两种可能,放或者不放,但不能有连续m个坑里都有物质
i=1时的放法为dp[n-2]; 在后n-2个坑中…………
……………………;
i=m-1时的放法为dp[n-m]。 在后n-m个坑中…………
得dp[n]=dp[n-1]+dp[n-2]+……+dp[n-m] 。
当n<=m-1时: dp[n]=2*dp[n-1] (无论放还是不放,都不会有连续m个坑里都有)
当n==m时: dp[n]=2*dp[n-1] -1(减去每个坑里都有核物质这种情况)
当n>m时:
dp[n]=dp[n-1]+dp[n-2]+……+dp[n-m]
dp[n-1]=dp[n-2]+……+dp[n-m]
两式相减得:
dp[n]=dp[n-1]*2-dp[n-m-1]
#include<stdio.h>int main(){ int n,m,i; scanf("%d%d",&n,&m); long long dp[n+1]; dp[0]=1;//n>1,m>1; for(i=1;i<=n;i++){ if(i<m) dp[i]=dp[i-1]*2; else if(i==m) dp[i]=dp[i-1]*2-1; else dp[i]=dp[i-1]*2-dp[i-m-1]; } printf("%lld",dp[n]);}
- 核电站问题 动态规划
- |NOIOJ|动态规划|9267:核电站
- 神奇的动态规划---核电站(openjudge)
- 核电站问题
- 核电站问题
- 核电站问题
- fjnu 1305 核电站问题
- 1305 核电站问题
- shu_1340 vijos_1232 核电站问题
- NEUQ 1256: 核电站问题
- VIJOS-P1232核电站问题
- vijos1232 核电站问题
- 【DP基础】核电站问题
- [codevs2618] 核电站问题
- 【CODEVS】2618 核电站问题
- codevs 核电站问题 2618
- Vijos 1232 核电站问题
- 2618 核电站问题
- open-falcon监控
- Spark 开发环境搭建(4)IDEA Gradle+java方式 Gradle导出jar包
- 网络层-IP协议
- [LeetCode]409. Longest Palindrome(最长回文)
- java包括继承的类的初始化全过程!(纯干货,新手别错过!)
- 核电站问题 动态规划
- dubbo初步了解
- 商城--后台 首页 管理员列表展示
- hibernate开发过程中的小细节
- “更多”的迹象
- ubuntu could not get lock /var/lib/dpkg/lock
- Eclipse中配置SQL Explore
- zoj 3609 Modular Inverse 求最小逆元 裸的的扩展欧几里得
- poj-1088-滑雪