牛客网刷题

简介: 牛客网刷题

1.有序序列合并


描述


输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。


输入描述:


输入包含三行,


第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。


第二行包含n个整数,用空格分隔。


第三行包含m个整数,用空格分隔。


输出描述:


输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。


示例1


输入:

5 6

1 3 7 9 22

2 8 10 17 33 44

输出:

1 2 3 7 8 9 10 17 22 33 44


思路:将两个数组中的数据存在另一个数组中,然后利用冒泡排序法进行排序。


#include <stdio.h>
int main()
{
  int m, n,i,j,temp;
  scanf("%d %d", &m, &n);
  int a[m], b[n];
    int x[m+n];
    for(i=0;i<m;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++)
    {
        scanf("%d",&b[i]);
    }
    for(i=0;i<m;i++)
    {
      x[i]=a[i];            
    }
    j=0;
    for(i=m;i<m+n;i++)
    {
      x[i]=b[j];
      j++;
  }
    for(i=0;i<n+m-1;i++)
    {
        for(j=0;j<m+n-1-i;j++)
        {
            if(x[j]>x[j+1])
            {
                temp=x[j];
                x[j]=x[j+1];
                x[j+1]=temp;
            }
        }
    }
    for(i=0;i<m+n;i++)
    {
        printf("%d ",x[i]);
    }
    return 0;
}


2.有序序列判断


描述


输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。


输入描述:


第一行输入一个整数N(3≤N≤50)。


第二行输入N个整数,用空格分隔N个整数。


输出描述:


输出为一行,如果序列有序输出sorted,否则输出unsorted。


示例1


输入:

5

1 6 9 22 30

输出:

sorted


示例2


输入:

5

3 4 7 2 10

输出:

unsorted


示例3


输入:

5

1 1 1 1 1

输出:

sorted


思路:将前一个数和后一个数做差,根据大于0或小于0的情况进行计数,如果计数的情况为n-1,那么就说明此序列两两相减的趋势相同,所以可对其进行是否有序的判断。

#include <stdio.h>
int main()
{
    int i,n,count1=0,count2=0;
    scanf("%d",&n);
    int x[n];
    for(i=0;i<n;i++)
    {
        scanf("%d",&x[i]);
    }
    for(i=0;i<n-1;i++)
    {
        if(x[i]-x[i+1]>=0)
            count1++;
        else if(x[i]-x[i+1]<0)
            count2++;
    }
    if(count1==n-1||count2==n-1)
        printf("sorted");
    else
        printf("unsorted");
    return 0;
}


3.有序序列插入一个整数


描述


有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。


输入描述:


第一行输入一个整数N(0≤N≤50)。


第二行输入N个升序排列的整数,输入用空格分隔的N个整数。


第三行输入想要进行插入的一个整数。


输出描述:


输出为一行,N+1个有序排列的整数。


示例1


输入:

5

1 6 9 22 30

8

输出:

1 6 8 9 22 30


#include <stdio.h>
int main()
{
   int i,n,m;  //n数组元素数目 m插入的数字
   scanf("%d",&n);
   int x[n+1];
   for(i=0;i<n;i++)
   {
      scanf("%d ",&x[i]);
   }
   int flag=1;  //判断是否插入条件
   scanf("%d",&m);
   for(i=0;i<n;i++)
   {
     if(m<x[i]&&flag==1)
     {
        printf("%d ",m) //完成插入
        flag=0;     //flag=0破坏if满足的条件,不再插入m
     }          //m比数组中的某一个数小,则执行这个if语句
     printf("%d ",x[i]);
   }
   if(m>x[n-1]) printf("%d ",m); //m比数组中的任一个数都打,则执行这个if语句
   return 0;
}        


4.序列中删除指定数字


描述


有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。


输入描述:


第一行输入一个整数(0≤N≤50)。

第二行输入N个整数,输入用空格分隔的N个整数。

第三行输入想要进行删除的一个整数。


输出描述:


输出为一行,删除指定数字之后的序列。


示例1


输入:

6

1 2 3 4 5 9

4

输出:

1 2 3 5 9


示例2


输入:

5

1 2 3 4 6 5

输出:

1 2 3 4 6


#include <stdio.h>
int main()
{
    int i,n;
    scanf("%d",&n);
    int x[n];
    for(i=0;i<n;i++)
    {
        scanf("%d",&x[i]);
    }
    int m;
    scanf("%d",&m);
    for(i=0;i<n;i++)
    {
        if(x[i]!=m) //数组中的元素跟想要删除的数字相等就不打印
            printf("%d ",x[i]);
    }
    return 0;
}
相关文章
|
1月前
|
存储 人工智能 自然语言处理
告别文件迷宫!阿里云盘企业版用 AI 重构高效办公
阿里云盘企业版是专为企业用户打造的文件数据管理全面解决方案。它不仅具备强大的存储功能,还通过引入 AI 能力,为企业用户提供了语义搜索、AI 助手和知识库等智能化功能,极大地提升了文件管理的效率和便捷性。
|
自然语言处理 Java 开发工具
ES上传自编译IK分词插件
ES上传自编译IK分词插件
ES上传自编译IK分词插件
|
10天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1210 5
|
9天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1172 87
|
9天前
|
云栖大会
阿里云云栖大会2025年9月24日开启,免费申请大会门票,速度领取~
2025云栖大会将于9月24-26日举行,官网免费预约畅享票,审核后短信通知,持证件入场
1765 12
|
19天前
|
人工智能 运维 安全

热门文章

最新文章