一、P8752 [蓝桥杯 2021 省 B2] 特殊年份 - 洛谷


算法代码:
#include<bits/stdc++.h>
using namespace std;
int cnt;
int main()
{
int i=1;
while(i<=5)
{
int num;
cin>>num;
string string_num=to_string(num);
if(string_num[0]==string_num[2]&&string_num[1]==string_num[3]-1)
{
cnt++;
}
i++;
}
cout<<cnt;
return 0;
}
二、P8703 [蓝桥杯 2019 国 B] 最优包含 - 洛谷

大佬思路:

#include<bits/stdc++.h>
using namespace std;
string S,T;
int dp[1005][1005];
int main(){
cin>>S>>T;
S=" "+S;
T=" "+T;
//在字符串前面加空格。(这个是将i=0变为i=1,将i<lenS变为i<=lenS,因为代码里面有
//dp[i-1][j-1],S和T可能在i=0或j=0时相等,这是dp[i-1][j-1]中的一个或两个下表为-1)
int lenS=S.size(),lenT=T.size();
//lenS是S的长度,lenT是T的长度。
memset(dp,0x3f,sizeof(dp));
for(int i=0;i<lenS;i++)
dp[i][0]=0;
//初始化。
for(int i=1;i<=lenS;i++)
for(int j=1;i>=j&&j<=lenT;j++)
//i>=j是因为当j>i时,会有几个字符超出字符串的范围。
if(S[i]==T[j])
dp[i][j]=dp[i-1][j-1];
else
dp[i][j]=min(dp[i-1][j-1]+1,dp[i-1][j]);
//核心代码不懂,就看我在上面 ↑的解释。
cout<<dp[lenS-1][lenT-1];
return 0;
}