1124 两个有序数组合并
题目来源:
https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1124
Description
已知数组a中有m个按升序序排列的元素,数组b中有n个降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。
Input
输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m, n均小于等于1000000。
Output
输出合并后的m+n个整数,数据之间用空格隔开。输出占一行。
Sample Input
4 1 2 5 7
3 6 4 2
Sample Output
7 6 5 4 2 2 1
题意描述:
输入m和m个数,n和n个数(m, n均小于等于1000000)
将两个数组按降序排列输出
解题思路:
将数组a和数组b存进c,对c进行降序排列,输出即可
程序代码:
1 #include<stdio.h> 2 #include<algorithm> 3 using namespace std; 4 bool cmp(int x,int y) 5 { 6 return x>y; 7 } 8 int a[1000010],b[1000010]; 9 int main() 10 { 11 int m,n,i,j; 12 while(scanf("%d",&m) != EOF) 13 { 14 for(i=1;i<=m;i++) 15 scanf("%d",&a[i]); 16 17 scanf("%d",&n); 18 for(i=1;i<=n;i++) 19 scanf("%d",&b[i]); 20 21 int c[m+n+1]; 22 for(i=1;i<=m;i++) 23 c[i]=a[i]; 24 for(j=m+1,i=1;i<=n;i++) 25 c[j++]=b[i]; 26 27 sort(c+1,c+m+n+1,cmp); 28 29 printf("%d",c[1]); 30 for(i=2;i<=m+n;i++) 31 printf(" %d",c[i]); 32 printf("\n"); 33 } 34 return 0; 35 }
易错分析:
注意sort函数中起始地址和终止地址
欢迎交流,共同进步——