POJ. - 사과(DP) 넣기.

2705 단어 dp
애플 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 29074 Accepted: 18376 Description
같은 사과 M개를 같은 접시 N개에 넣고 어떤 접시는 비워두고 놓지 않도록 허락하는데, 모두 몇 가지의 다른 분법이 있느냐고 물었다.(K로 표시) 5, 1, 1과 1, 5, 1은 같은 분법이다.Input
첫 번째 줄은 테스트 데이터의 수량 t(0 <=t <=20)입니다.다음 행에는 공백으로 구분된 두 개의 정수 M과 N이 있습니다.1<=M,N<=10. Output
입력한 각 데이터 그룹 M과 N에 대해 한 줄로 해당하는 K를 출력합니다.Sample Input
1 7 3 Sample Output
8
이 문제는 해법이 많다.dp의 상태 이동 방정식은 dp[i][j]를 생각하기 어렵다. i개의 사과를 j개의 접시에 넣는 방안서if(i)
#include <iostream>
#include <algorithm>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>

using namespace std;
int dp[15][15];
int n,m;
void fun()
{

    for(int i=1;i<=11;i++)
    {
        dp[i][1]=1;
        //dp[i][0]=0;
       for(int j=1;j<=11;j++)
       {
           dp[0][j]=1;
           if(i<j)
            dp[i][j]=dp[i][j-1];
           else
            dp[i][j]=dp[i][j-1]+dp[i-j][j];
       }
    }
}
int main()
{
    memset(dp,0,sizeof(dp));
    fun();
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&m);

        printf("%d
"
,dp[n][m]); } }

좋은 웹페이지 즐겨찾기