化学品问题(组合数学)
来源:互联网 发布:石油天然气文献数据库 编辑:程序博客网 时间:2024/05/17 06:04
Description
一个实验室有N个放化学品的试管,排列在一条直线上。如果连续M个试管中放入药品,则会发生爆炸,于是,在某些试管中可能不放药品。
任务:对于给定的N和M,求不发生爆炸的放置药品的方案总数
Input
第一行是一个正整数L,代表输入数据的组数
接下来L行,每行有两个正整数N,M( 1<N<32,2≤M≤5)
Output
输出L行,每行只有一个正整数S,表示对应输入数据的方案总数。
Sample Input
2
4 3
3 2
Sample Output
13
5
思路: 构建一个数学num[n]表示n个试管的方案数则,若
1.n< m,无论怎么放都不会爆炸f[n]=f[n-1]*2
2.n= m,由上一种情况减去全部试管放满的情况即为f[n]=f[n-1]*2-1
3.n> m,剔除去第n个前面(m-1)个放药品的情况,即f[n]=f[n-1]*2-f[n-m-1]
代码:
#include<iostream>using namespace std;int f[33];int main(){ int c;//方案数 cin >> c; int n, m;//试管数目,连续放m个会爆炸 while (c--) { memset(f, 0, sizeof(f)); cin >> n >> m; f[0] = 1; for (int i = 1; i <= n; i++) { if (i < m)//第一种情况 { f[i] = 2 * f[i - 1]; } if (i == m)//第二种情况 { f[i] = 2 * f[i - 1] - 1; } if (i > m)//第三种情况 { f[i] = 2 * f[i - 1] - f[i - m - 1]; } } cout << f[n] << endl; }}
阅读全文
0 0
- 化学品问题(组合数学)
- 化学品问题
- 化学品问题
- 化学品问题 I
- 化学品问题 oj137
- 错排问题(组合数学)
- 组合数学计数问题(谷歌)
- 【HPUoj】放苹果问题(组合数学)
- 组合数学-错排问题(转)
- 组合数学问题(一)
- 组合数学系列问题
- 组合数学问题
- 传球问题(组合数学问题)
- [NOIP] [组合数学] NOIP2016Day2 组合数问题
- 二聚物问题与组合数学
- 【组合数学】36军官问题
- 组合数学--错排问题
- 【组合数学】“派送食物问题”
- java多线程中的一些方法
- 吉布斯抽样
- 看懂物联网未来发展的趋势
- Java交换排序————冒泡排序及快速排序
- rgb和Lab,rgb和hsl的色彩空间转换
- 化学品问题(组合数学)
- 1051. 复数乘法 (15)
- [NOTE] Oracle官网JDK下载路径(持续更新)
- 第17章 ioctl操作
- Intellij IDEA 出现“Usage of API documented as @since 1.7+”的解决办法
- test
- 问题排除:RecyclerView添加分割线后,每次下拉刷新 Item与分割线间都会增加间距。
- Spring中<context:annotation-config/>的作用
- ios 随机数生成