1015. 核电站

10175102262 LarsPendragon

动态规划。m=2时,它的情况数显对于任意n=i,其情况数cas[m][i]等于cas[m][i-1]+cas[m][i-2]。因为从cas[m][i-1]变为cas[m][i],可能的情况有两种:第i个坑有核物质,第i个坑没有核物质。有核物质时,其情况数等于cas[m][i-2],因为要空出第i-1个坑,剩余的情况数就是当n=i-2时的情况数;无核物质时情况数就是n=i-1时的情况数。附代码:

#include <iostream>
using namespace std;
int main()
{
    int n, m;
    long long cas[6][51];
    cas[1][1]=1;
    for(int i=2; i<6; ++i) cas[i][1]=2;
    for(int i=2; i<6; ++i)
        for(int j=2; j<51; ++j)
        {
            if(j<=i) cas[i][j]=cas[i-1][j-1]+cas[i][j-1];
            else
            {
                cas[i][j]=cas[i][j-1];
                for(int k=1; k<i; ++k) cas[i][j]+=cas[i][j-k-1];
            }
        }
    while(cin>>n>>m)
        cout<<cas[m][n]<<endl;
    return 0;
}
你当前正在回复 博客/题目
存在问题!