分治 排队购票问题

/*lijingjing
分为3中情况
1、当没有人拿100元时 只有一种方法
2、当拿50的人数小于拿100的人数为0
3、当有若干人且拿50》100则可分,最后一个拿100,那么前m+n-1个中有m-1个100和n个50
                                最后一个拿50 ,那么前m+n-1个中有m个100和n-1个50
*/
#include
using namespace std;
int Ticket(int m,int n)
{
	int sum=0;
	if(m==0)
		sum=1;
	else
	{
		if(n<m)
			sum=0;
		else
		{
			sum++;
			return Ticket(m-1,n)+Ticket(m,n-1);
		}
	}
	return sum;
}
int main()
{
	int m,n;
	cin>>m>>n;//n为拿50的人个数  m为100元个数
	cout<<Ticket(m,n)<<endl;
	return 0;
}

你可能感兴趣的:(算法)