1 条题解

  • 0
    @ 2025-9-5 20:14:33

    AC记录

    不难得出状态转移方程

    f[i][j]=j*(f[i-1][j]+f[i-1][j-1]);
    

    至于为什么则看代码

    AC CODE :

    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    int f[10][10];
    signed main(){
    	int n,m;cin>>n>>m;
    	f[1][1]=1;//初始化
    	for(int i=2;i<=n;i++){
    		for(int j=1;j<=min(i,m);/*正常情况有可能i>m,但此处可以直接使用i*/j++){
    			f[i][j]=j*(f[i-1][j]+f[i-1][j-1]);
    			/*
    			最后一颗球放进一个盒子,有j种放法
    			包括前面的盒子则有j*f[i-1][j-1]
    			共用盒子则j*f[i-1][j] 
    			*/
    		}
    	} 
    	cout<<f[n][m]<<endl;
    	return 0;
    }
    

    为什么这里面的代码块这么奇怪啊


    希望对你有帮助喵~

    • 1

    信息

    ID
    285
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    11
    已通过
    4
    上传者