【题目链接】B题链接
【题目类型】贪心模拟
【题目大意】一共有t个测试样例。输入n表示有n个长度为4的数字串,(n <= 10)对数字串进行最少次修改,保证不出现重复字符串。
【解题思路】只修改第一个位置的就可以了,因为最多只输入10个字符串(‘0’ - ‘9’),每次修改前先统计一下每个字符串的第一个位置的字符,因为数据小所以不会超时
int main(){
int t; RD(t);
while(t--){
int n, ans = 0; RD(n);
char s[12][6]; REP(i, n) scanf("%s", s[i]);
FOR( i, 1, n){
FOR( j, 0, i){
if (strcmp(s[i], s[j]) == 0){
ans++;
set<char> used;
FOR(k, 0, n) used.insert(s[k][0]); // 把所有字符串的第一位都送进去, 因为n最多也只能是10, 每次在修改前都会更新一次
for(char k = '0'; k <= '9'; k++){
if (used.count(k)) continue;
s[i][0] = k;
break;
}
}
}
}
OT(ans); REP(i, n){printf("%s
", s[i]);}
}
return 0;
}