示例#1
0
 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];
 }
示例#2
0
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;
}
示例#3
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];
 }
示例#4
0
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];
 }
示例#6
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;
}
示例#7
0
int main(){
    printf("%d\n",uniquePaths(36,7));


    return 0;
}
示例#8
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);
 }
示例#9
0
int main(void) {

	printf("%d\n", uniquePaths(2,3));

	return 0;
}
示例#10
0
void main(void) {
	printf("uniquePaths: %d \n", uniquePaths(7,4));
	printf("_uniquePaths: %d \n", __uniquePaths(7,4));

}
示例#11
0
int main()
{
	int i = uniquePaths(1, 2);
}
示例#12
0
 int uniquePaths(int m, int n) {
     return uniquePaths(1, 1, m, n);
 }
示例#13
0
 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);
 }
示例#14
0
int main() {
    printf("%d\n", uniquePaths(2, 1));
    return 0;
}
示例#15
0
int main(){
	cout<<uniquePaths(2,2)<<endl;
	return 0;
}