今天去爱立信面试,面试官给我出的 C 算法问题。大家来看看!
举例:对于一个2*2的二维数组,从[0,0]位置走到[1,1]位置有两种路线。(注:所有移动只能是向右‘→’方向或者向下‘↓’方向)对于一个3*2的二维数组,从[0,0]位置走到[2,1]位置有三种路线。(大家可以自己画一画就知道了)
对于一个3*3的二维数组,从[0,0]位置走到[2,2]位置有六种路线。
问题:对于一个m*n的二维数组,m和n不一定相等。从[0,0]位置走到[m-1,n-1]位置有多少种路线?
编写函数 int f(m,n) 返回路线数。
给我十分钟的时间,我只想出一个算法出来,没写出真正的程序。并且算法比较简单,面试官说我的算法效率太低。
各位有没有什么高见,说一说这个算法怎么写好