int uniquePaths(int m, int n) {
if(m <= 0 || n <= 0) return 0;
else if(m == 1 || n == 1) return 1;
else{
int a[m][n];
int i, j;
for(i = 0; i < m; ++i) a[i][n - 1] = 1;
for(j = 0; j < n; ++j) a[m - 1][j] = 1;
for(i = m - 2; i >= 0; --i)
for(j = n - 2; j >= 0; --j)
a[i][j] = a[i + 1][j] + a[i][j + 1];
return a[0][0];
}
}
if(m <= 0 || n <= 0) return 0;
else if(m == 1 || n == 1) return 1;
else{
int a[m][n];
int i, j;
for(i = 0; i < m; ++i) a[i][n - 1] = 1;
for(j = 0; j < n; ++j) a[m - 1][j] = 1;
for(i = m - 2; i >= 0; --i)
for(j = n - 2; j >= 0; --j)
a[i][j] = a[i + 1][j] + a[i][j + 1];
return a[0][0];
}
}