//第一行全1,第一列全1,其他位置为其左上和正上之和。
int uniquePaths(int m, int n ) 
{
  int a[100][100] = {0};
  int i = 0, j = 0;
  for(i = 0; i < m; i++)
      a[i][0] = 1;   //给第一列全赋值为1
  for(i = 0; i < n; i++)
      a[0][i] = 1;  //给第一行全赋值为1
  for(i = 1; i < m; i++)
      for(j = 1; j < n; j++)
          a[i][j] = a[i-1][j] + a[i][j-1];
  return a[m-1][n-1];
}
1.a[0][0]-a[0][n]是第一行;a[0][0]-a[m][0]是第一列,注意别搞混了。
2.关键是理解,要到某个点,只能从左边或者上边,那么就是两种路径之和,依此类推
 a[i][j] = a[i-1][j] + a[i][j-1];