acwing(dp集合GOOD )1050. 鸣人的影分身(蓝桥杯)

博客主要介绍了如何使用动态规划方法解决将一定数量的苹果放入若干个无序盘子中的问题。程序代码展示了如何初始化状态转移矩阵,并通过填充矩阵来计算所有可能的放置方法。核心思路是每一步考虑当前苹果是否放入新盘子,从而得出最终的解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:1050. 鸣人的影分身

在这里插入图片描述
思路:该问题等价于将m个苹果放置在无序的n个盘子里有多少种方法

#include<bits/stdc++.h>

using namespace std;
typedef long long LL;
typedef pair<double,double>PII;
const int N=(1<<20)+10;
const int mod=1000000009;
int f[15][15];//f[i][j],i表示的是苹果数量,j表示的是盘子数量
int main(){
    int t;
    cin>>t;
    int n,m;
    for(int i=0;i<=10;i++){//当苹果数量为0时,任何盘子都为0,只有一种放置方法
        f[0][i]=1;
    }
    for(int i=1;i<=10;i++){
        for(int j=1;j<=10;j++){//j不从0开始的原因是因为只要有苹果,盘子就不能没有
            f[i][j]=f[i][j-1];//第j个盘子放0
            if(i>=j) f[i][j]+=f[i-j][j];//每个盘子都加上一个1 (这样才不会导致同一集合因顺序不同而增加次数)
        }
    }
    while(t--){
        cin>>m>>n;
        cout<<f[m][n]<<endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值