递推

迟来的总结。
错排公式\(f[i]=(i-1)\times(f[i-1]*f[i-2])\)
怎么推的呢?首先考虑\(f[i]\)表示i个数有的排列数,考虑加入一个i+1,它可以与前面错排后的排列任意一个数换位置,也可与与前面有i-2个数错排后(还有一个没错排)交换。(模板
将整数\(n\)分成\(k\)份,且每份不能为空,求方案数

点击查看代码
for(int i=1;i<=n;i++){
        for(int j=1;j<=k;j++){
            if(i==j) f[i][j]=1;
            else if(i<j) f[i][j]=0;
            else f[i][j]=f[i-1][j-1]+f[i-j][j];
        }
    }

可以新添加一个1,也可以将每个已分出的区间都放一个1,转移。模板

斐波那契公式及其变式
),斐波那契公式不光可以正常推数,还可以表示像这种每次变化后长度/数字和。
结合二维矩阵,其实像这种下标和值同时要小于某某的题看起来很二维数点,所以就可以想到列矩阵,然后分讨一下就可以了。

posted @ 2024-12-17 21:29  煦阳gyy  阅读(9)  评论(0)    收藏  举报