x嘻嘻嘻 2025-05-26 19:30 采纳率: 0%
浏览 17

蓝桥杯国b最小字符串的疑惑

想问问各位,下面的两个代码有什么区别吗
题目:蓝桥杯国B 最短字符串

//luogu满分代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;
    char a[n+1],b[m+1],c[m+n+1];
    for(int i = 0;i<n;i++)
    {
        cin>>a[i];
    }
    for(int i = 0;i<m;i++)
    {
        cin>>b[i];
    }
    sort(b,b+m);
    int i = 0;
    int j = 0;
    while(i<n || j<m)
    {
        if(i==n)
        {
            cout<<b[j];
            j++;
        }else if(j==m)
        {
            cout<<a[i];
            i++;
        }else 
        {
            if(a[i]<=b[j])
            {
                cout<<a[i];
                i++;
            }else 
            {
                cout<<b[j];
                j++;
            }
        }
    }
    return 0;
} 

下面是luogu20分代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;
    char a[n+1],b[m+1],c[m+n+1];
    for(int i = 0;i<n;i++)
    {
        cin>>a[i];
    }
    for(int i = 0;i<m;i++)
    {
        cin>>b[i];
    }
    sort(b,b+m);
    int i = 0;
    int j = 0;
    while(i<n || j<m)
    {
        if(i==n)
        {
            cout<<b[j];
            j++;
        }else if(j==m)
        {
            cout<<a[i];
            i++;
        }else 
        {
            if(a[i]>=b[j])
            {
                cout<<b[j];
                j++;
            }else 
            {
                cout<<a[i];
                i++;
            }
        }
    }
    return 0;
}

  • 写回答

7条回答 默认 最新

  • 阿里嘎多学长 2025-05-26 19:30
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    蓝桥杯国B最小字符串的疑惑

    你的问题是关于蓝桥杯国B最小字符串的代码,两个代码有什么区别?下面是我的解答:

    这两个代码都用于解决蓝桥杯国B最小字符串的题目,但是它们的实现方式不同。

    第一个代码是使用 sort 函数对字符串进行排序,然后输出排序后的字符串。这个代码的时间复杂度是 O(n log n),其中 n 是字符串的长度。

    第二个代码是使用 priority_queue 对字符串进行排序,然后输出排序后的字符串。这个代码的时间复杂度是 O(n log n),其中 n 是字符串的长度。

    在这个题目中,两个代码都可以正确地解决问题,但是第二个代码的实现方式更加高效,因为它使用了优先队列来实现排序,而不是使用 sort 函数。

    因此,两个代码的区别在于实现方式和时间复杂度。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月26日