【题目链接】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\n", s[i]);}
    }
    return 0;
}