zoukankan      html  css  js  c++  java
  • Kattis

    题目:

    题意:

    给出已经去除了几个数的一个序列,任务是将去除的数字插回去补全这个序列,输出字典序排在第一的那个补全的序列。

    例如:

    样例输入:

    5 3

    1 4 2

    样例输出:

    1 3 4 2 5

    思路:

    用数组存一下给出的序列,用一个队列存一下被去除的数字的序列(由小到大排列),然后分别比较两个容器的第一个元素,那个小就先输出哪一个,知道两个容器中的元素都输出完毕。

    代码:

    #include <bits/stdc++.h>
    #define inf 0x3f3f3f3f
    #define FRE() freopen("in.txt","r",stdin)
    using namespace std;
    typedef long long ll;
    const int maxn = 1e5+10;
    int a[maxn],vis[maxn];
    
    int main(){
        //FRE();
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i = 0; i<m; i++){
            scanf("%d",&a[i]);
            vis[a[i]] = 1;
        }
        queue<int> que;
        for(int i = 1; i<=n; i++){
            if(vis[i] == 0){
                que.push(i);
            }
        }
        int cnt = 0;
        while(cnt<m && !que.empty()){
            if(a[cnt] < que.front()){
                printf("%d
    ",a[cnt++]);
            }
            else{
                printf("%d
    ",que.front());
                que.pop();
            }
        }
        //将剩余的元素全部输出出来
        while(cnt<m){
            printf("%d
    ",a[cnt++]);
        }
        while(!que.empty()){
            printf("%d
    ",que.front());
            que.pop();
        }
        return 0;
    }
    /*
    PutIn:
    5 3
    1
    4
    2
    PutOut:
    1
    3
    4
    2
    5
    PutIn:
    7 4
    6
    4
    2
    1
    PutOut:
    3
    5
    6
    4
    2
    1
    7
    */
    View Code
  • 相关阅读:
    软件工程第六次作业
    软件工程第五次作业
    软件工程第四次作业
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    《CLSZS团队》:团队项目选题报告
    计算机软件工程 作业五
    计算机软件工程 作业四
    计算机软件工程 作业三
  • 原文地址:https://www.cnblogs.com/sykline/p/9925777.html
Copyright © 2011-2022 走看看