四道搞定两道,悬。
#include <iostream>
#include <string>
using namespace std;
void kuoHao(string str, int& legal, int& left, int& right) {
for (auto ch : str) {
if (ch == '(')
left++;
if (ch == ')') {
if (left > 0) {
left--;
legal++;
}
else
right++;
}
}
}
int main() {
string str;
cin >> str;
int legal = 0, left = 0, right = 0;
kuoHao(str, legal, left, right);
cout << legal << " " << left << " " << right << endl;
return 0;
}
这题直接用sort还报错了,C++11不支持???神奇
#include <iostream>
#include <vector>
#include <algorithm>
#include <windows.h>
using namespace std;
//bool cmp(pair<pair<int, int>, int> a, pair<pair<int, int>, int> b) {
// return a.first.first - a.first.second > b.first.first - b.first.second;
//}
void mySort(vector<pair<pair<int, int>, int>>& vec) {
for (int i = 0; i < vec.size(); i++) {
pair<pair<int, int>, int> myMax = vec[i];
int position = i;
for (int j = i + 1; j < vec.size(); j++) {
if (myMax.first.first - myMax.first.second < vec[j].first.first - vec[j].first.second) {
myMax = vec[j];
position = j;
}
}
pair<pair<int, int>, int> temp = vec[i];
vec[i] = vec[position];
vec[position] = temp;
}
}
vector<int> WaitInLine(vector<int>& a, vector<int>& b) {
// write code here
vector<int> result;
vector<pair<pair<int, int>, int>> vec;
for (int i = 0; i < a.size(); i++)
vec.push_back(pair<pair<int, int>, int>({ a[i], b[i] }, i + 1));
//sort(vec.begin(), vec.end(), cmp);
mySort(vec);
for (auto n : vec)
result.push_back(n.second);
return result;
}
int main() {
vector<int> a = { 8,9,7 };
vector<int> b = { 5,8,3 };
vector<int> result = WaitInLine(a, b);
for (auto n : result)
cout << n << " ";
cout << endl;
system("pause");
return 0;
}