1.括号匹配(100%)
//
// Created by Administrator on 2021/9/12 0012.
//
#include<iostream>
#include<stack>
using namespace std;
int func(string& s){
if(s.size() == 0) return 0;
int result = 0;
stack<char> stack_s;
stack_s.push(s[0]);
for(int i=1;i<s.size();++i){
if(s[i] == '{' || s[i] == '['){
stack_s.push(s[i]);
}else{
char c = stack_s.top();
stack_s.pop();
if(c == '{' && s[i] == '}'){
continue;
}
if(c == '[' && s[i] == ']'){
continue;
}
result++;
}
}
return result;
}
int main(){
int n;
cin >> n;
string s;
while(n--){
cin >> s;
cout << func(s) << endl;
}
}
2.给一个3的倍数,3个3的倍数之和等于该数(100%)
//
// Created by Administrator on 2021/9/12 0012.
//
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
int m;
while(n--){
cin >> m;
if(m == 3 || m == 6){
cout << 0 << endl;
}else{
int d = (m/3)-2;
int result = ((1+d)*d)/2;
cout << result << endl;
}
}
}
3.象吃将(90%)
//
// Created by Administrator on 2021/9/12 0012.
//
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int func(vector<pair<int,int>>& dir,int r1,int c1,int r2,int c2){
if(r1 <0 || r1 > 9 || c1 <0 || c1 > 8) return -1;
if(r2 <0 || r1 > 9 || c2 <0 || c2 > 8) return -1;
queue<pair<int,int>> queue_d;
queue_d.push({r1,c1});
int result = -1;
while(!queue_d.empty()){
result++;
int count =queue_d.size();
while(count--){
pair<int,int> temp = queue_d.front();
queue_d.pop();
int l = temp.first;
int r = temp.second;
if(l == r2 && r == c2){
return result;
}
for(auto d:dir){
int i = d.first;
int j = d.second;
if(i+l < 0 || i+l >9 || j+r < 0 || j+r >8){
continue;
}else{
queue_d.push({i+l,j+r});
}
}
}
}
return -1;
}
int main(){
int r1,c1;
int r2,c2;
cin >> r1;
cin.get();
cin >> c1;
cin >> r2;
cin.get();
cin >> c2;
vector<pair<int,int>> dir = {{-3,-2},{-3,2},{2,-3},{-2,-3},{3,-2},{3,2},{-2,3},{2,3}};
cout << func(dir,r1,c1,r2,c2) << endl;
}