比赛 20121108 评测结果 AAAAAAAAAA
题目名称 K 上升段 最终得分 100
用户昵称 苏轼 运行时间 0.008 s
代码语言 C++ 内存使用 3.15 MiB
提交时间 2012-11-08 10:45:41
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
using namespace std;
int n,m;
unsigned long long q[25][25]={0};
//int w[22]={0},tmp,ans=0,temp=0,q[11][11]={0};
//bool used[22]={0};
//void dfs(int x);
int main()
{
	freopen ("k.in","r",stdin);
	freopen ("k.out","w",stdout);
	/*for (n=1;n<=10;n++)
	{
		for (m=1;m<=n;m++)
		{
			dfs(0);
		}
	}
	for (int i=1;i<=10;i++)
	{
		for (int j=1;j<=10;j++)
		{
			cout<<q[i][j]<<' ';
		}
		cout<<endl;
	}
	*/
	cin>>n>>m;
	for (int i=1;i<=n;i++)
	{
		q[i][1]=1;
	}
	for (int i=2;i<=n;i++)
	{
		for (int j=2;j<=m&&j<=i;j++)
		{
			q[i][j]=q[i-1][j]*j+q[i-1][j-1]*(i-j+1);
		}
	}
	cout<<q[n][m];
	return 0;
}
/*
void dfs(int x)
{
	if (x==n)
	{
		tmp=0,temp=0;
		for (int i=0;i<n;i++)
		{
			if (w[i]>tmp)
			{
				tmp=w[i];
			}
			else
			{
				tmp=w[i];
				temp++;
			}
		}
		temp++;
		if (temp==m)
			q[n][m]++;
		return;
	}
	for (int i=1;i<=n;i++)
	{
		if (!used[i])
		{
			used[i]=1;
			w[x]=i;
			dfs(x+1);
			used[i]=0;
		}
	}
}
*/