1212. 地宫取宝

#include<iostream>
using namespace std;
int f[55][55][13][14],w[55][55];//f[i][j][x][y]表示的是在(i,j)点拿x件物品最大价值为y的方案数。
int MOD= 1000000007;
int main()
{
    int n,m,k;
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++){
        cin>>w[i][j];
        w[i][j]++;
    }
    f[1][1][1][w[1][1]]=1;
    f[1][1][0][0]=1;
    for(int i=1;i<=n;i++)
    {
      for(int j=1;j<=m;j++)
      {
          if(i==1&&j==1)continue;
          for(int x=0;x<=k;x++)
          {
              for(int y=0;y<=13;y++)
              {
                  int &s=f[i][j][x][y];
                  s=(s+f[i-1][j][x][y])%MOD;
                  s=(s+f[i][j-1][x][y])%MOD;
                  if(y==w[i][j]&&x!=0)
                  {
                      for(int r=0;r<y;r++)
                      {
                          s=(s+f[i-1][j][x-1][r])%MOD;
                          s=(s+f[i][j-1][x-1][r])%MOD;
                      }
                  }
              }
          }
      }
    }
    int res=0;
    for(int i=0;i<=13;i++)
    {
        res=(res+f[n][m][k][i])%MOD;
    }
    cout<<res;
    
}

全部评论

相关推荐

05-28 16:06
门头沟学院 Java
嵐jlu:我是山川🐔里🐔🧱的,阿里系简历全过; 你这简历一看就还是半成品啊,没有荣誉经历奖项什么的吗?
投递阿里巴巴集团等公司8个岗位
点赞 评论 收藏
分享
07-16 14:10
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务