C++信息学奥赛1192

#include <bits/stdc++.h>

using namespace std;

const int len = 15;

// 用于展示我们我们所推导出的所有情况
void show(int x[len][len])
{
	for(int i=0;i<=10;i++)
	{
		for(int j=0;j<=10;j++)
		{
			cout << x[i][j] << " ";
		}
		cout << endl;
	}		
}

int main()
{
	
	
	int x[len][len]={0};
	
	// m代表苹果数,n代表盘子数
	int m,n;
	
	// 没有盘子和只有一个盘子的情况	
	for(m=0;m<len;m++) x[m][0] = x[m][1] = 1;	
	
	// 没有苹果和只有一个苹果的情况
	for(n=0;n<len;n++) x[0][n] = x[1][n] = 1;
	
	// 其他情况
	for(m=2;m<len;m++)
	{
		for(int n=2;n<len;n++)
		{
			// 苹果比盘子少,多余的空盘子可以忽略
			if(m<n) x[m][n] = x[m][m];
			// 苹果比盘子多
			else x[m][n] = x[m-n][n] + x[m][n-1];
		}
	}
//	show(x);
	int f;
	cin >> f;
	for(int i=0;i<f;i++)
	{
		cin >> m >> n;
		cout << x[m][n];
	}
	
	return 0;
}

  

posted @ 2024-09-11 10:00  我信你个鬼!  阅读(5)  评论(0编辑  收藏  举报