英语不好,水题也成精。这么回事,题意,就是预先设定了一个密码(6位)然后你输入了一个密码,要求,如果和预设的差错位数不超过k,则认为和预设密码一样,让你求k-1是多少。。。
题解是不是一脸懵逼。。。。然后我才知道,就是暴力,找最相近的两个密码,不同的位数更新为temp/2而已。(这个自己好好想一想就能想出来,我是推了几个例子)就是这么简单。。。好尴尬
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
char str[1010][7];
int main()
{
int i , temp = 0 , ans = 6 , n;
scanf("%d",&n);
for(int i = 0 ; i < n ; i++)
scanf("%s",str[i]);
for(int i = 0 ; i < n ; i++){
for(int j = i + 1 ; j < n ; j++){
temp = 0;
for(int k = 0 ; k < 6 ; k++){
if(str[i][k] != str[j][k])
temp++;
}
if(ans > ((temp-1)/2)) ans = (temp-1)/2;
}
}
printf("%d\n",ans);
return 0;
}
版切第3题
人一我百,人十我万,穷尽一生,只为最强