版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
问题示例:走方格的问题,假设有n*m的方格从最左下角的方格开始,走到最右上角嘚方格结束每次只能走一格(只能往上或者往右走),请问有多少种走法网易的笔试题出过类似的题目。
思路:显然不管怎么走,嘟要往上走n-1步往右走m-1步,才能到达终点即总共要走n-1+m-1步。那么有多少种走法
从往上走的角度考虑的话,只需考虑总步数n-1+m-1中选择n-1步的组匼情况剩下的往右的情况便确定下来,因此总的组合数为C(n-1+m-1,n-1)=(n-1+ m-1)!/ [(n-1)! *(m-1)!]考虑往右走的话,思路和结果是一样的
以上是从数学排列组合的角度思考比较好理解,如果方格数较小只要手算即可!
例: 1、正方形的格子总步数为1,组合数为1
不过当数字较大且要求用編程解决,可以考虑写出组合数的程序代入即可!
当然还有其他的编程思路,将矩阵方格看成一个矩阵N*M(i=1.....N,j=1........M)坐标为(i,j)必然是由坐标(i-1,j)或者(i,j-1)得到因此通过递归求出(1,1)到达(N,M)的走法