


input:
ABCD
ABCD
output:
4 0
input:
ABCD
CDBA
output:
0 4
input:
AABC
DEFA
output:
0 1
思路:只要先计算出字母正确(不管位置)的的个数,然后再去比较位置和字母都正确的的个数,前者-后者=字母正确位置不正确的个数
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=11;
int a1[maxn],b1[maxn];
char a[maxn],b[maxn];
int main()
{
cin>>a>>b;
for(int i=0;i<4;i++)
{
a1[i]=a[i]-'A';
b1[i]=b[i]-'A';
}
sort(a1,a1+4);
sort(b1,b1+4);
int cnt1=0,cnt2=0,cnt=0;
while(cnt1<4&&cnt2<4)
{
if(a1[cnt1]==b1[cnt2])
{
cnt1++;
cnt2++;
cnt++;
}
else
{
if(a1[cnt1]<b1[cnt2]) cnt1++;
else cnt2++;
}
}
int cntt=0;
for(int i=0;i<4;i++)
{
if(a[i]==b[i]) cntt++;
}
cout<<cntt<<" "<<cnt-cntt<<endl;
return 0;
}
该程序实现了两个字符串中相同字母的计数,并分别计算位置和字母都正确以及仅字母正确的数量。通过输入示例展示了算法的运行过程,算法首先计算字母正确的数量,然后减去位置也正确的数量,得到位置不正确的字母数。

被折叠的 条评论
为什么被折叠?



