zoukankan      html  css  js  c++  java
  • [POJ1664]放苹果(动态规划)

    [POJ1664]放苹果

    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个盘子中的方案数
    因为可以有盘子不放苹果
    当i<j时,dp[i][j]=dp[i][i] (盘子和苹果均为相同的)
    当i>=j时,此时可能盘子上都有苹果,我们把每个盘子上都拿走一个苹果,方案数不会变。(很妙啊)

    [dp[i][j]=dp[i-j][j] ]

    也可能盘子上没有苹果

    [dp[i][j]=dp[i][j-1] ]

    #include<bits/stdc++.h>
    using namespace std;
    int n,m,dp[15][15];
    void work(){
    	cin>>n>>m;
    	for(int i=0;i<=m;i++)dp[0][i]=1;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			if(i<j)dp[i][j]=dp[i][i];
    			else dp[i][j]=dp[i-j][j]+dp[i][j-1];
    		}
    	}printf("%d
    ",dp[n][m]);
    }
    int main(){
    	ios::sync_with_stdio(false);
    	int t;cin>>t;
    	while(t--)work();return 0;
    }
    
  • 相关阅读:
    CSS笔记(十)position属性与定位
    CSS笔记(九)轮廓
    前端需要学习算法吗 算法面的意义 职业规划
    Web前端笔试整理10
    Web前端笔试整理9
    Web前端笔试整理8
    Web前端笔试整理7
    Web前端笔试整理6
    JS 图片延迟加载/懒加载
    JS 同步与异步编程
  • 原文地址:https://www.cnblogs.com/lsgjcya/p/9781598.html
Copyright © 2011-2022 走看看