题目
思路
提示的剔除
对理解题意来说很重要,否则没完全理解题意的做法就会导致如下惨剧
代码
#include<bits/stdc++.h>
using namespace std;
int tt[130] = { 0 };
int tp[130] = { 0 };
int main()
{
int r1 = 0, r2 = 0;
string t, p; cin >> t >> p;
for (int i = 0; i < 4; i++)
{
tt[t[i]]++;
tp[p[i]]++;
}
// 先找字母和位置均相同的情况
for (int i = 0; i < 4; i++)
{
if (t[i] == p[i])
{
r1++;
tt[t[i]]--;
tp[p[i]]--;
}
}
// 剔除字母和位置均相同的情况,寻找字母相同的情况
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (j == i)
continue;
if (p[i] == t[j])
{
if (tt[t[j]] && tp[p[i]])
{
tt[t[j]]--;
tp[p[i]]--;
r2++;
break;
}
}
}
}
cout << r1 << ' ' << r2 << endl;
return 0;
};