深信服笔试8.25第2题求解

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    string s;
    cin >> s;

    int trans[10] = {-1};
    memset(trans, -1, 10 * sizeof(int));
    cin >> n;

    int idx, tmp;
    for (int i = 0; i < n; ++i) {
        scanf("%d%d", &idx, &tmp);
        trans[idx] = tmp;
        for (int j = 0; j < 10; ++j) {
            if (trans[j] == idx) {
                trans[j] = tmp;
            }
        }
    }

    for (auto &ch :s) {
        if (trans[ch - '0'] != -1) {
            ch = trans[ch - '0'] + '0';
        }
        putchar(ch);
    }
    puts("");
    return 0;
}
测了好久,始终0case,有大神帮忙看一下问题出在哪吗?#笔试题目#
全部评论
考虑 0 1 0 2 这种情况,你的代码里trans[0]给替换成2了。但实际上在第一次替换时0已经变成1了。
1 回复
分享
发布于 2020-08-25 21:19
我也是并查集写的,思路跟你差不多,然后0case?内存超限???,不知道你是错误还是内存超限
点赞 回复
分享
发布于 2020-08-25 21:10
联易融
校招火热招聘中
官网直投
**我跟你一样,也是0,不知道啥问题
点赞 回复
分享
发布于 2020-08-25 21:10
并查集应该不行吧,,,比如说a变成b,b变成c,c在变成a,,,再比如a变成b,后面又来一个a变成c,,,
点赞 回复
分享
发布于 2020-08-25 21:11
巧了,一毛一样
点赞 回复
分享
发布于 2020-08-25 21:12
怀疑是  while(cin>>mystr>>n)  多组数据
点赞 回复
分享
发布于 2020-08-25 21:14
第二题有过了的大佬说下吗?
点赞 回复
分享
发布于 2020-08-25 21:16
不是说如果不用Python做题是0分么。。。。。。
点赞 回复
分享
发布于 2020-08-25 21:16

相关推荐

点赞 2 评论
分享
牛客网
牛客企业服务