int uniquePaths2(int m,int n){//O(m*n) 空间复杂度 O(m*n) if(1==m) return 1; if(1==n) return 1; map<pair<int,int>,int>::iterator iter = t_mapNote.find(make_pair(m,n)); if(iter!=t_mapNote.end()){ return iter->second; } else{ int value = uniquePaths2(m-1,n)+uniquePaths2(m,n-1); t_mapNote[make_pair(m,n)] = value; return value; } }
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; }