PAT 乙級 1045
阿新 • • 發佈:2018-08-30
namespace 個數 stream amp -s 滿足 數字 元素 col
題目
題目地址:PAT 乙級 1045
題解
本題的解法比較巧妙,剛開始的試著用暴力求解,果不其然時間超限……
變換思路,既然對於每個元素來說滿足的條件是前小後大,那麽對數組排序,對應的位置相等的即為題設要求的“可能主元”,但是還有一個條件要保證當前是從左向右遍歷的最大值;總結一下兩個條件:1. 排序後對應位置數字相等;2. 當前操作元素是從左向右遍歷中的最大值
同時還要註意,當輸入n值為0時,除了需要輸出“可能主元”的個數之外,還需要保留換行符‘\n’
代碼
1 #include <iostream> 2 #include <algorithm> 3#include <vector> 4 using namespace std; 5 6 int main() { 7 vector<int> num; 8 vector<int> sortnum; 9 vector<int> result; 10 int n = 0; 11 cin >> n; 12 while (n--) { 13 int tmp = 0; 14 cin >> tmp; 15 num.push_back(tmp);16 sortnum.push_back(tmp); 17 } 18 sort(sortnum.begin(), sortnum.end()); 19 int maxx = 0; 20 for (int i = 0; i < num.size(); i++) { 21 if (num[i] > maxx) 22 maxx = num[i]; 23 if (num[i] == sortnum[i] && num[i] >= maxx) 24 result.push_back(sortnum[i]);25 } 26 cout << result.size() << endl; 27 for (int i = 0; i < result.size(); i++) { 28 if (i != result.size() - 1) 29 cout << result[i] << ‘ ‘; 30 else 31 cout << result[i]; 32 } 33 cout << endl; 34 35 return 0; 36 }
PAT 乙級 1045