返回题解分享
讨论 / 题解分享/ 帖子详情

李白打酒加强版(编程题) - 题解

#include <bits/stdc++.h>
#define int long long
using namespace std;

const int N = 110;
int n, m;
int f[N][N][N];
int mod = 1e9 + 7;


signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> n >> m;

    f[0][0][2] = 1;
    for(int i = 0; i <= n; i ++ )
        for(int j = 0; j < m; j ++ )
            for(int k = 0; k <= 100; k ++ ){
                    if(i == 0 && j == 0) continue;

                    if(i > 0 && k % 2 == 0)
                    {
                        f[i][j][k] = (f[i][j][k] + f[i - 1][j][k / 2]) % mod;
                    }
 
                    if(j > 0)
                    {
                        f[i][j][k] = (f[i][j][k] + f[i][j - 1][k + 1]) % mod;
                    }
                }
    f[n][m][0] = f[n][m - 1][1];
    cout << f[n][m - 1][1]; // 最后一步只有一种可能
}
0 回复 0 转发 1 喜欢 0 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!