网站挂黑链赚钱2021年最为成功的营销案例
目录
14. 第⼀⾏是⼀个整数n,表示⼀共有n组测试数据, 之后输⼊n⾏ 字符串
15. 第⼀⾏是⼀个整数n,然后是n组数据,每组数据2⾏,每⾏ 为⼀个字符串,为每组数据输出⼀个字符串,每组输出占⼀⾏
16. 多组测试数据,第⼀⾏是⼀个整数n,接下来是n组字符串, 输出字符串
17. 多组测试数据,每组测试数据的第⼀⾏为整数N (1<=N<=100),当N=0时,输⼊结束,第⼆⾏为N个正整数, 以空格隔开,输出结果为字符串
示例模拟
输入1:N=5,序列 3 4 2 1 5
14. 第⼀⾏是⼀个整数n,表示⼀共有n组测试数据, 之后输⼊n⾏ 字符串
练习题 14. 句⼦缩写
模板
int n;
string result, s;
cin >> n;
getchar(); // 吸收⼀个回⻋,因为输⼊n之后,要输⼊⼀个回⻋
while (n--) {getline(cin, s);for (int i = 1; i < s.size() - 1; i++) {}
正确:
#include<bits/stdc++.h>
using namespace std;string solve(string& s)
{if(s.empty()) return "";string ret;ret+=toupper(s[0]);for(int i=1;i<s.size();i++){if(s[i]==' ' && s[i+1]!=' '){ret+=toupper(s[i+1]);}}return ret;
}int main()
{int n=0;while(cin>>n){getchar();
//!!!! 清除输入缓冲区残留的换行符string s;while(n--){getline(cin,s);cout<<solve(s)<<endl;}}return 0;
}
关于 大小写转化
15. 第⼀⾏是⼀个整数n,然后是n组数据,每组数据2⾏,每⾏ 为⼀个字符串,为每组数据输出⼀个字符串,每组输出占⼀⾏
正确
//实现 字符串 数据插入
#include<bits/stdc++.h>
using namespace std;int main()
{int n=0;//组cin>>n;getchar();string a,b;while(n--){getline(cin,a);getline(cin,b);int pos=a.size()/2;a.insert(pos,b);cout<<a<<endl;}return 0;
}
- 一定要记得 get char
16. 多组测试数据,第⼀⾏是⼀个整数n,接下来是n组字符串, 输出字符串
练习题:16. 位置互换
正确·
#include<bits/stdc++.h>
using namespace std;int main()
{int n=0;//组cin>>n;getchar();string a;while(n--){getline(cin,a);string ret;for(int i=0;i<a.size();i++){ret+=a[i+1];ret+=a[i];i++;}cout<<ret<<endl;}return 0;
}
17. 多组测试数据,每组测试数据的第⼀⾏为整数N (1<=N<=100),当N=0时,输⼊结束,第⼆⾏为N个正整数, 以空格隔开,输出结果为字符串
练习题:17. 出栈合法性
- 首先 要理解 这里的栈模拟过程
示例模拟
输入1:N=5,序列 3 4 2 1 5
操作步骤 | 栈状态 | 目标指针位置 | 说明 |
入栈1 | [1] | j=0 (C[0]=3) | 栈顶1 ≠ 3,继续入栈 |
入栈2 | [1,2] | j=0 | 栈顶2 ≠ 3,继续入栈 |
入栈3 | [1,2,3] | j=0 | 栈顶3 = C[0]=3,弹出3,j=1 |
入栈4 | [1,2,4] | j=1 (C[1]=4) | 栈顶4 = C[1]=4,弹出4,j=2 |
检查栈顶2 | [1,2] | j=2 (C[2]=2) | 栈顶2 = C[2]=2,弹出2,j=3 |
检查栈顶1 | [1] | j=3 (C[3]=1) | 栈顶1 = C[3]=1,弹出1,j=4 |
入栈5 | [5] | j=4 (C[4]=5) | 栈顶5 = C[4]=5,弹出5,j=5 |
栈空 | [] | - | 合法,输出 |
正确:
#include <iostream>
#include <stack>
#include <vector>
using namespace std;int main() {int n;while (cin >> n && n != 0) { // 处理多组输入vector<int> a(n);for (int i = 0; i < n; i++) cin >> a[i]; // 改用动态数组 stack<int> stk;int j = 0;for (int i = 1; i <= n; i++) { // 按顺序入栈1~n stk.push(i);// 每次入栈后检查栈顶是否匹配目标序列while (!stk.empty() && stk.top() == a[j]) { // 添加空栈判断 stk.pop();j++;}}cout << (stk.empty() && j == n ? "Yes" : "No") << endl; // 双重验证合法性 }return 0;
}