一、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];elsedp[i][j]=min(dp[i-1][j-1]+1,dp[i-1][j]);//核心代码不懂,就看我在上面 ↑的解释。 cout<<dp[lenS-1][lenT-1];return 0;
}