比试


比试
这道题用正常的方法一定会超时。
题目要求的是交换数列中所有的x和y,所以我们可以建立一个数组p[x] = y, p[y] = x,输出的时候输出对应的数组值即可

#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int s[N], n, m;
int p[20];
int main()
{
    cin.tie(0) -> sync_with_stdio(0);
    while(cin >> n >> m)
    {
        for(int i = 0; i < n; i++)
        cin >> s[i];
        for(int i = 0; i < 10; i++) p[i] = i;
        while(m--)
        {
            int x, y;
            cin >> x >> y;
            for(int i = 0; i < 10; i++)
            {
                if(p[i] == x) p[i] = y;
                else if(p[i] == y) p[i] = x;
            }
            
        }

        for(int i = 0; i < n; i++)
        {
            if(p[s[i]] == s[i])
            cout << s[i] << (i == n - 1 ? "/n/n" : " ");
            else
            cout << p[s[i]] << (i == n - 1 ? "/n/n" : " ");
        }
    }


    return 0;

}

原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/267283.html

(0)
上一篇 2022年6月15日
下一篇 2022年6月15日

相关推荐

发表回复

登录后才能评论