我是靠谱客的博主 热情嚓茶,最近开发中收集的这篇文章主要介绍杭电1267 下沙的沙子有几粒?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题意:就是给你m个H和n个D,然后从左开始数H的累积个数总是不比D的累计数少的排列有多少种举一个测试案例吧:3个H和1个D总共有3种排列,依次是:H D H H,H H D H,H H  H D三种排列,亲~意思应该懂了吧?!呵呵。。。

思路:递推公式为:a[m][n]=a[m-1][n]+a[m][n-1];然后当n=0的时候无论m取何值都是1,递推公式怎么推来的呢?我现在说下我的思路吧!假设3个H和2个D是由2个H和2个D还有3个H一个D推来的,2个H和2个D总共有H D H D,H H D D两种排列,3个H和一个D总共有H D H H,H H D H,H H  H D三种排列,然后在H D H D,H H D D的后面添加一个H就是2中排列,在H D H H,H H D H,H H  H D的后面添加一个D就有3种方案,所以总共就是5种方案(其它的添加方法都是重复的,不信的话自己可以试一下)

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	long long a[22][22];
	int m,n;
	memset(a,0,sizeof(a));
	for(int i=1;i<=20;i++)
		a[i][0]=1;
	for(int i=1;i<=20;i++)
		for(int j=i;j<=20;j++)
			a[j][i]=a[j-1][i]+a[j][i-1];
	while(cin>>m>>n){
		cout<<a[m][n]<<endl;
	}
	return 0;
}


最后

以上就是热情嚓茶为你收集整理的杭电1267 下沙的沙子有几粒?的全部内容,希望文章能够帮你解决杭电1267 下沙的沙子有几粒?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部