1.分割字符串
2.二维偏序
// bool cmp(pair<int,int>p1,pair<int,int>p2) // { // if(p1.first<p2.first) return true; // else return false; // } /*请完成下面这个函数,实现题目要求的功能 当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^ ******************************开始写代码******************************/ // int maxBoxes(vector < vector < int > > boxes) // { // int n=boxes.size(); // vector< pair<int,int> >v; // for(int i=0;i<boxes.size();i++) // v.push_back(make_pair(boxes[i][0],boxes[i][1])); // sort(v.begin(),v.end(),cmp); // vector<int>dp(n,1); // for(int i=1;i<n;i++) // { // for(int index=0;index<i;index++) // if(v[i].second>v[index].second) // dp[i]=max(dp[i],dp[index]+1); // } // return *max_element(dp.begin(),dp.end()); // } int maxBoxes(vector<vector<int>>& boxes) { if(boxes.size() == 0) return 0; sort(boxes.begin(),boxes.end()); int res = 1; vector<int> dp(boxes.size() , 1); for(int i = 0; i < boxes.size() ; i++) { for(int index = 0 ; index < i ; index++) { if(boxes[index][0] < boxes[i][0] && boxes[index][1] < boxes[i][1] ) dp[i] = max(dp[i],dp[index] + 1); } } return *max_element(dp.begin(),dp.end()); } /******************************结束写代码******************************/ int main() { int res; int _boxes_rows = 0; int _boxes_cols = 0; cin >> _boxes_rows >> _boxes_cols; vector< vector < int > > _boxes(_boxes_rows); for(int _boxes_i=0; _boxes_i<_boxes_rows; _boxes_i++) { for(int _boxes_j=0; _boxes_j<_boxes_cols; _boxes_j++) { int _boxes_tmp; cin >> _boxes_tmp; _boxes[_boxes_i].push_back(_boxes_tmp); } } res = maxBoxes(_boxes); cout << res << endl; return 0; }
全部评论
(2) 回帖