以下是英语词典中排列为矩阵的单词
MATHE
ATHEM
THEMA
HEMAT
EMATI
MATIC
ATICS
跟踪矩阵从左上角开始,每步向右或向下移动,到达矩阵的右下角。确保任何此类跟踪都生成相同的单词。对于长度为m + n-1的给定单词写成大小为m * n的矩阵,可以进行多少次这样的描记?
输入格式 第一行输入包含一个整数T.T测试用例跟随每一行。 每行包含2个空格分隔的整数m& n表示写入的矩阵有m行,每行有n个字符。
约束:
1 <= T <= 103
1 ≤ m,n ≤ 106
输出格式 按照问题陈述中的说明打印可跟踪单词的方式(S)。如果数量大于10,则为9 + 7, print S mod(10 rest to power 9 +7)
示例输入
1
2 3
示例输出
3
解释 让我们考虑写一个字作为矩阵
AWA
WAY
在这里,矩阵中的单词AWAY可以用3种不同的方式跟踪,遍历任意一个向右或向下。
AWA
Y
AW
AY
A
WAY
答案 0 :(得分:5)
这是一个很好的问题,这就是我将回答它的原因。然而,它似乎是一个家庭作业,或者是从奥林匹克运动会中获得的一个问题,这就是为什么你有这么多的downvotes。答案是我们有(N-1 + M-1)!/((N- 1)!(M-1)!)给定M和N的不同路径。例如对于样本输入,我们有(2-1 + 3-1)!/((2-1)!(3-1) !)= 3!/(1 * 2),即6/2 = 3.
这是因为M-1移动RIGHT,N-1移动DOWN。
因此,对于您的示例,我们可以
右下方
右下方
向右右下方
所以这些只是M-1 RIGHT和N-1 DOWN的排列。 就这么简单。
这是简化的(从文件中读取等,已删除)算法
long getResult(int N, int M){
return Math.Factorial(N +M -2)/(Math.Factorial(N-1)*Math.Factorial(M-1));
}
希望有所帮助