I Will Like Matrix!
题目
在一个 n ∗ m 的矩阵 A 的所有位置中分别填入 0 或 1,要求填入的数必须满足 Ai,j ≤ Ai,j+1 且
A i,j ≤ A i+1,j 。询问一共有多少种不同的矩阵,并将答案对 1,000,000,007 取模。
输入
共一行包含两个整数 n 和 m。
输出
共一行包含一个整数 ans,表示矩阵个数模 1,000,000,007 的值。
输入样例
2 2
输出样例
6
注意
对于 60% 的数据:n,m,k ≤ 300
对于 100% 的数据:n,m,k ≤ 5000
解题思路
其实这道题是由:
a[i][j]=(a[i−1][j]+a[i][j−1]+1)a[i][j]=(a[i-1][j]+a[i][j-1]+1)a[i][j]=(a[i−1][j]+a[i][j−1]+1)
来做的,这里表示的是这个矩阵中的1的部分.
程序如下
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,a[10001][10001];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
{
a[i][j]=(a[i-1][j]+a[i][j-1]+1)%1000000007;//求1的部分
}
}
printf("%d",(a[n][m]+1)%1000000007);//输出0和1的部分
}
本文探讨了一个n*m矩阵的填充问题,要求矩阵中的每个元素从左到右、从上到下递增,探究了所有可能的0和1填充方案数量,并提供了一种基于动态规划的方法来解决这一挑战。
2278

被折叠的 条评论
为什么被折叠?



