2021年天梯赛选拔第二场
字符串替换问题
1 #include <iostream> 2 #include <cstring> 3 #include <string> 4 5 using namespace std; 6 7 int main() 8 { 9 string s , ans = ""; 10 int cnt = 0; 11 getline(cin , s); 12 for(int i = 0 ; i < s.size() ; i ++ ) 13 { 14 if(s[i] == '6') cnt ++; 15 if(s[i] != '6' || i == s.size() - 1)//到字符串结尾要特判 16 { 17 if(cnt > 9) ans += "27"; 18 else if(cnt > 3) ans += "9"; 19 else if(cnt > 0) 20 for(int i = 0 ; i < cnt ; i ++ ) 21 ans += "6"; 22 23 if(s[i] != '6') 24 ans += s[i]; 25 26 cnt = 0; 27 } 28 } 29 cout << ans << endl; 30 return 0; 31 } 32
还是个字符串问题
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <string> 5 #include <algorithm> 6 #include <cmath> 7 #include <map> 8 #include <stack> 9 #include <queue> 10 11 using namespace std; 12 13 typedef long long LL; 14 typedef pair<int, int>PII; 15 16 map<string, int>mp; 17 map<string, int>::iterator it; 18 19 int main() 20 { 21 int n; 22 cin >> n; 23 getchar(); 24 while(n -- ) 25 { 26 string s; 27 int k; 28 int flag = 0; 29 int cnt = 0; 30 getline(cin, s); 31 for (int i = 0; i < s.size(); i ++) 32 { 33 if (s[i] == ',') 34 { 35 if (s[i - 1] != 'g') 36 flag = 1; 37 if (s[i - 2] != 'n') 38 flag = 1; 39 if (s[i - 3] != 'o') 40 flag = 1; 41 } 42 if (s[i] == '.') 43 { 44 if (s[i - 1] != 'g') 45 flag = 1; 46 if (s[i - 2] != 'n') 47 flag = 1; 48 if (s[i - 3] != 'o') 49 flag = 1; 50 } 51 } 52 if (flag == 0) 53 { 54 for (k = s.size() - 1; k >= 0; k--)//精髓 55 { 56 if (s[k] == ' ') 57 cnt++; 58 if (cnt == 3) 59 break; 60 } 61 } 62 if (flag == 1) 63 cout << "Skipped" << endl; 64 if (flag == 0) 65 { 66 for (int k1 = 0; k1 < k; k1++) 67 { 68 cout << s[k1]; 69 } 70 cout << " qiao ben zhong." << endl; 71 } 72 73 } 74 return 0; 75 }
栈模拟
1 #include <iostream> 2 #include <stack> 3 4 using namespace std; 5 6 stack<int>stk; 7 8 int main() 9 { 10 int n,m,k; 11 cin >> n >> m >> k; 12 while(k--) 13 { 14 int e = 1; 15 bool flag = true; 16 for(int i = 0 ; i < n ; i ++ ) 17 { 18 int a; 19 cin >> a; 20 if(a == e) e ++ ; 21 else 22 { 23 stk.push(a); 24 if(stk.size() > m) 25 flag = false; 26 } 27 while(!stk.empty() && stk.top() == e) 28 { 29 e ++ ; 30 stk.pop(); 31 } 32 } 33 34 if(stk.size() || flag == false)//工人愤怒的两个条件 35 { 36 cout << "NO" << endl; 37 while(!stk.empty())//当前样例工人愤怒,清空栈然后判断下一样例 38 stk.pop(); 39 40 continue; 41 } 42 if(stk.empty()) 43 cout << "YES" << endl; 44 } 45 return 0; 46 }

浙公网安备 33010602011771号