题解:P16287 [蓝桥杯 2026 省 Python A 组] 单词合并
P16287 [蓝桥杯 2026 省 Python A 组] 单词合并
分析:
一道模拟题,遍历两个单词,如果它们的长度相差为
代码:
#include<bits/stdc++.h>
using namespace std;
int n,ans;
char s[10001][21];
int main() {
// freopen("a.in","r",stdin);
scanf("%d\n",&n);
for(int i=1; i<=n; i++)scanf(" %s",s[i]);
for(int i=1; i<=n; i++) {
for(int j=i+1; j<=n; j++) {
int l1=strlen(s[i]),l2=strlen(s[j]);
if(abs(l1-l2)==1) {//如果长度相差为1
int a=0;//记录删了多少个字符
for(int k=0,w=0; k<l1&&w<l2; k++,w++)
if(s[i][k]!=s[j][w]) {
if(l1<l2)k--;
else w--;
if(++a==2)break;//如果为2,就跳出
}
if(a<2)ans++;//不要写成a==1,因为a可以等于0
}
}
}
printf("%d",ans<<1);//要乘2,因为(i,j)和(j,i)是两种方案
return 0;
}