本文主要是介绍Problem 1215 # 教官的任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述
小伦同学在新生军训期间因为高中时期突出的编程能力被ACM基地发掘到了,在组织的帮助下他可以实现免军训进而参加基地进行的亚洲区域赛。因此他向教官打了个报告后,准备开溜,这时教官要求他编程实现以下任务才能离开连队:现有两个数组 A 和 B,数组 A 是升序排序的有序数组,数组 B 是降序排序的有序数组,要求把这两个数组合并为一个升序排序的有序数组。面对这样的任务,想必你也能轻而易举解决吧!
输入
第一行输入 N(1 <= N <= 100) 和 M(1 <= M <= 100),分别代表数组 A 和 B 的长度。
第二行输入 N 个数,代表数组 A 。
第三行输入 M 个数,代表数组 B 。
输出
输出一行合并后的数组。
输入范例
3 4 2 3 5 6 4 2 1
输出范例
1 2 2 3 4 5 6
两个数组,一升一绛,升序序列从前往后依次与降序序列从后往前比较,小的写出第三个数组
AC代码:
#include<stdio.h>
int main()
{int a[102]={0};int b[102]={0};int c[204]={0};int n;int m;int sum;int j;int i;int k;while(scanf("%d %d",&n,&m)!=EOF){sum=m+n;for(i=0;i<n;i++)scanf("%d",&a[i]);for(j=0;j<m;j++)scanf("%d",&b[j]);i=0;j=m-1;for(k=0;k<sum;k++){if(i==n)c[k]=b[j--];else if(j==-1)c[k]=a[i++];else if(a[i]<=b[j]){c[k]=a[i];i++;}else if(a[i]>=b[j]){c[k]=b[j];j--;}}for(k=0;k<sum-1;k++)printf("%d ",c[k]);printf("%d\n",c[k]);}return 0;
}
这篇关于Problem 1215 # 教官的任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!