L1-2 6翻了
2和3题都a的太蠢了,直接改输出就行不用改字符串,直接改输出就行 .
#include<bits/stdc++.h>
using namespace std;
const int N = 2e3 + 10;
int main()
{
string s;
getline(cin,s);
for(int i=0;s[i];i++)
{
if(s[i]=='6')
{
int ans=0,j=i;
while(s[j++]=='6')ans++;
if(ans>3&&ans<=9)
{
s[i]='9';
s.erase(s.begin()+i+1,s.begin()+i+ans);
}
else if(ans>9)
{
s[i]='2';
s[i+1]='7';
s.erase(s.begin()+i+2,s.begin()+i+ans);
}
}
}
cout<<s<<endl;
return 0;
}
L1-3 敲笨钟
#include<bits/stdc++.h>
using namespace std;
const int N = 2e3 + 10;
string s;
bool finds(char s1)
{
int t = s.find(s1);
if (s[t - 1] == 'g' && s[t - 2] == 'n' && s[t - 3] == 'o')return true;
return false;
}
int main()
{
int n;
cin >> n;
getchar();
while (n--)
{
s.clear();
getline(cin, s);
if (finds(',') && finds('.'))
{
int k,cnt = 3;
for (k = s.length(); k >= 0; k--)
{
if (s[k]== ' ')cnt--;
if(cnt==0)break;
}
s.erase(s.begin()+k+1, s.end());
s += "qiao ben zhong.";
cout << s<<endl;
}
else cout<<"Skipped"<<endl;
}
return 0;
}
L2-3深入虎穴
一个简单bfs,bfs之前找到入度为0的点开始bfs即可。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int N=1e5+10;
vector<int>a[N];
int d[N];
int bfs(int x)
{
queue<int>q;
q.push(x);
while(q.size())
{
auto t=q.front();
q.pop();
if(!a[t].size()&&q.empty())return t;
for(auto s:a[t])
{
q.push(s);
}
}
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int t,s;
cin>>t;
while(t--)
{
cin>>s;
a[i].push_back(s);
d[s]++;//统计入度
}
}
int i;
for(i=1;i<=n;i++)if(d[i]==0)break;寻找入度为0的点。
cout<<bfs(i)<<endl;
return 0;
}