#include<bits/stdc++.h>
#define ll long long
#include<string>
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
int main()
{
speed_up;
int t;
cin>>t;
getchar();
for(int i=0;i<t;i++)
{
string s;
getline(cin,s);
int f=0;
for(int j=0;j<s.size();j++)
{
if(s[j]==‘,‘||s[j]==‘.‘)
{
//注意判断j是否大于3,否则可能越界。因为题目只说了下半句诗至少有 3 个字,没说逗号前也至少有3个
if(j>=3&&(s.substr(j-3,3)=="ong"))continue;
else f=1;//不符合两个都为ong
}
}
if(f!=1)
{
int k=0,j;
for(j=s.size()-1;;j--)
{
if(s[j]==‘ ‘||s[j]==‘,‘)k++;//k表示遇到第几个空格或逗号
if(k==3)
{
break;
}
}
for(int kk=0;kk<=j;kk++)//输出kk位置前的所有字符
{
cout<<s[kk];
}
cout<<"qiao ben zhong."<<endl;
}
else cout<<"Skipped"<<endl;
}
}
7-7 A-B (20分)
没看清楚题,第二个字符串也可能带空格。
7-9 小字辈 (25分)
#include<bits/stdc++.h>
#define ll long long
#include<string>
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<cmath>
#include<string>
#include<map>
#include<sstream>
#include<cstring>
#include<vector>
#include<iomanip>
#include<queue>
#include<set>
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
/*
编号 辈分
-1 1
5 5 5 2
6 6 4 3
2 7 4
n v[n] 层数(deep)
2 1 4
6 2 7 3
5 3 4 6 2
-1 5 1
4 8 3
7 9 4
*/
vector<int>v[100005],ans;
vector<int>::iterator it;
int maxx;
void dfs(int n,int deep)
{
for(int i=0; i<v[n].size(); i++)
{
//cout<<n<<"*"<<deep<<endl;
dfs(v[n][i],deep+1);
}
if(deep>maxx)//ans里只存最深的那一层的编号下标i
{
maxx=deep;//deep是层数,maxx记录最大层数
//cout<<"&"<<maxx<<endl;
ans.clear();
ans.push_back(n);
}
else if(maxx==deep)
ans.push_back(n);
}
int main()
{
speed_up;
int n,t,pos;
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>t;
if(t==-1)
{
pos=i;
continue;
}
v[t].push_back(i);
}
dfs(pos,1);//从编号-1的位置开始搜
sort(ans.begin(),ans.end());
cout<<maxx<<endl;
cout<<*ans.begin();
for(it=ans.begin()+1; it!=ans.end(); it++)
{
cout<<‘ ‘<<*it;
}
cout<<endl;
}
7-11 互评成绩 (25分)
输出for循环有个地方写错了导致样例过了其他测试点没过。