牛客春招刷题训练营 - 2025.3.21 题解
活动地址:牛客春招刷题训练营 - 编程打卡活动
Easy 字符串加密
简要题意
给一个字符串,对其去重,依次补全所有字母,视作一个密码表。
之后根据密码表加密一个字符串。
Solution
记录一下每个字母是否出现,模拟题目的步骤就好。
Code
void R()
{
array<bool,26> vis={};
string s,t,p;
cin>>s>>t;
for (char c:s)
if (!vis[c-'a'])
{
vis[c-'a']=1;
p.push_back(c);
}
for (int i=0;i<26;i++)
if (!vis[i])
p.push_back(i+'a');
for (char &c:t)
c=p[c-'a'];
cout<<t;
return;
}
Medium 从单向链表中删除指定值的节点
简要题意
模拟一个链表的插入和删除。
Solution
数据范围很小,直接用 vector
模拟即可。
Code
void R()
{
int n,h;
vector<int> v;
cin>>n>>h;
v.push_back(h);
for (int i=1;i<n;i++)
{
int a,b;
cin>>a>>b;
v.insert(next(find(v.begin(),v.end(),b)),a);
}
int k;
cin>>k;
v.erase(find(v.begin(),v.end(),k));
for (int x:v) cout<<x<<' ';
return;
}
Hard 走方格的方案数
简要题意
求 到
的非降路径数。
Solution
相当于你要在 步中选出
步横着走,答案就是
。
Code
void R()
{
int n,m;
cin>>n>>m;
auto fac=[&](int x)->int
{
int res=1;
while (x)
{
res*=x;
x--;
}
return res;
};
auto binom=[&](int n,int m)->int
{
return fac(n)/fac(m)/fac(n-m);
};
cout<<binom(n+m,n)<<'\n';
return;
}
#牛客春招刷题训练营#