AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

地宫寻宝打卡

作者: 作者的头像   一剑破万法 ,  2025-03-11 17:08:38 · 重庆 ,  所有人可见 ,  阅读 3


0


``
#include [HTML_REMOVED]

include [HTML_REMOVED]

using namespace std;

int a[55][55],f[55][55][13][15];
int n,m,k;

int main()
{
scanf(“%d%d%d”,&n,&m,&k);

for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++){
        scanf("%d",&a[i][j]);
        a[i][j]++;
    }

f[1][1][0][0]=1;
f[1][1][1][a[1][1]]=1;

for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
        {
            for(int u=0;u<=k;u++)//遍历所有抓取次数
                for(int v=0;v<=14;v++)//遍历所有价值情况
                {
                    //不拿(i,j)的情况
                    int &val=f[i][j][u][v];

                    val=(val+f[i-1][j][u][v])%1000000007;

                    val=(val+f[i][j-1][u][v])%1000000007;//不拿(i,j)所有拿东西次数为u的方案的和

                    if(u>0&&a[i][j]==v)//遍历的价值情况正好于a[i][j]相等,代表这次可以进行抓取操作
                    {
                        for(int s=0;s<a[i][j];s++)//把价值小于(i,j)的所有有价值的东西全部抓取
                            {
                                val=(val+f[i-1][j][u-1][s])%1000000007;//所有价值小于a[i][j]拿东西次数为u-1的方案的和
                                val=(val+f[i][j-1][u-1][s])%1000000007;
                            }
                    }
                }
        }

int res=0;
for(int i=1;i<=14;i++)
    res=(res+f[n][m][k][i])%1000000007;

printf("%d\n",res);

return 0;

}
``

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息