int uniquePaths(int m, int n) { if (m < n) return uniquePaths(n, m); vector<int> curRow(n, 0); curRow[0] = 1; for (int i = 0; i < m; i++) { for (int j = 1; j < n; j++) curRow[j] += curRow[j-1]; } return curRow[n-1]; }
int main(int argc, char** argv) { int m=3, n=7; if( argc>2){ m = atoi(argv[1]); n = atoi(argv[2]); } printf("uniquePaths=%d\n", uniquePaths(m,n)); return 0; }
int uniquePaths(int m, int n) { if (m < n) return uniquePaths(n, m); vector<int> prevRow(n, 1); vector<int> curRow(n, 1); for (int i = 1; i < m; i++) { for (int j = 1; j < n; j++) { curRow[j] = curRow[j-1] + prevRow[j]; } swap(prevRow, curRow); } return prevRow[n-1]; }
int uniquePaths(int m, int n) { if (m <= n) { int tmp = m; m = n; n = tmp; } pair<int, int> pa (m,n); if (result.find( pa )!= result.end()) { return result[ pa]; } if (m == 1 || n == 1) return 1; if (m == 2 ) return n; if ( n == 2) return m; int sum = 0; int i = m ; while ( i-- >= 2 ) { sum += uniquePaths( i , n -1 ); } i = n ; while ( i-- >= 2 ) { sum += uniquePaths( m -1 , i); } result[ pa] = sum; return sum; }
int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int row = obstacleGrid.size(); int col = obstacleGrid[0].size(); if(row == 1 && col == 1) return 1; vector<vector<int>> path_number(row, std::vector<int>(col, 0)); if(row-1-1 >=0) if(obstacleGrid[row-1-1][col-1] != 1) path_number[row-1-1][col-1] = 1; if(col-1-1 >=0) if(obstacleGrid[row-1][col-1-1] != 1) path_number[row-1][col-1-1] = 1; uniquePaths(0, 0, obstacleGrid, path_number); return path_number[0][0]; }
int main(int argc, const char * argv[]) { cout<< uniquePaths(1, 1) <<endl; // ==> 1 cout<< uniquePaths(2, 2) <<endl; // ==> 2 cout<< uniquePaths(3, 3) <<endl; // ==> 6 cout<< uniquePaths(4, 4) <<endl; // ==> 20 cout<< uniquePaths(5, 5) <<endl; // ==> 70 cout<< uniquePaths(6, 6) <<endl; // ==> 252 cout<< uniquePaths(7, 7) <<endl; // ==> 924 cout<< uniquePaths(8, 8) <<endl; // ==> 3432 cout<< uniquePaths( 51 , 9) <<endl; // ==> 1916797311? //Time Limit Exceeded cout<<A(2,2)<<endl; cout<< uniquePaths2(3, 3) <<endl; // ==> 20 cout<< uniquePaths2(4, 4) <<endl; // ==> 20 cout<< uniquePaths2(5, 5) <<endl; // ==> 70 cout<< uniquePaths2(6, 6) <<endl; // ==> 252 cout<< uniquePaths2(7, 7) <<endl; // ==> 924 cout<< uniquePaths2(8, 8) <<endl; // ==> 3432 cout<<A(4,4)<<endl; cout<<A(5,5)<<endl; cout<<A(7,7)<<endl; cout<<A(8,8)<<endl; cout << "--------------" << endl; cout<< uniquePaths3(3, 3) <<endl; // ==> 20 cout<< uniquePaths3(4, 4) <<endl; // ==> 20 cout<< uniquePaths3(5, 5) <<endl; // ==> 70 cout<< uniquePaths3(6, 6) <<endl; // ==> 252 cout<< uniquePaths3(7, 7) <<endl; // ==> 924 cout<< uniquePaths3(8, 8) <<endl; // ==> 3432 cout<< uniquePaths3(51, 9) <<endl; // ==> 3432 // cout<< uniquePaths(2, 4) <<endl; // ==> 2 // cout<< uniquePaths(3, 4) <<endl; // ==> 6 return 0; }
int main(){ printf("%d\n",uniquePaths(36,7)); return 0; }
/** * @param n, m: positive integer (1 <= n ,m <= 100) * @return an integer */ int uniquePaths(int m, int n) { // wirte your code here if (m == 1 || n == 1) return 1; return uniquePaths(m-1, n) + uniquePaths(m, n-1); }
int main(void) { printf("%d\n", uniquePaths(2,3)); return 0; }
void main(void) { printf("uniquePaths: %d \n", uniquePaths(7,4)); printf("_uniquePaths: %d \n", __uniquePaths(7,4)); }
int main() { int i = uniquePaths(1, 2); }
int uniquePaths(int m, int n) { return uniquePaths(1, 1, m, n); }
int uniquePaths(int m, int n) { if (m < 1 || n < 1) return 0; if (m == 1 && n == 1) return 1; return uniquePaths(m - 1, n) + uniquePaths(m, n - 1); }
int main() { printf("%d\n", uniquePaths(2, 1)); return 0; }
int main(){ cout<<uniquePaths(2,2)<<endl; return 0; }