NOI
Total time limit:
-
1000ms
-
Memory Limit:
-
65536kB
-
Describe
-
Put m the same apples on n the same plate, allow some plates to be empty, ask how many different ways? (denoted by k) 5,1,1 and 1,5,1 are the same kind of sub-method.
-
Input
-
The first line is the number of test data t (0 <= T <= 20). Each of the following lines contains two integers m and n, separated by a space. 1<=m,n<=10.
-
Output
-
For each set of data entered M and N, the corresponding k is output in one line.
-
Sample input
-
17 3
-
Sample output
-
8
Use an array of a[i][j] to hold a value that represents the method by which I put an apple into a J plate
Code:
#include<iostream>#include<cstdio>#include<cstring>UsingNamespace Std;int nMA[201][201];voidDp(){For(int I=1; I<=11; I+ +) A[0][i]=1A[I][1]=1;//means that 0 apples are placed on the I plate by 1, which means that I can put an apple into 1 plates and 1For(int I=1; I<=11; I++)For(Int J=1; j<=11; j++)If(I>=j) A[I][j]=a[I-j][j]+a[I][j-1];//A[I-J][J] Take an apple off each plate, a[i][j-1] take off a plateelse a[I][j]=a[I][j-1];}IntMain(){int T;scanf("%d",&t); while (T--) { dp (); scanf ( "%d%d" , &n,&m); printf ( "%d \n ",a[n< Span class= "Sh_symbol" >][m); }return 0;< Span class= "Sh_cbracket" >
666: Play the Apple