zoukankan      html  css  js  c++  java
  • PTA 两个有序序列的中位数(25分)

    两个有序序列的中位数 
     

    已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列,的中位数指A(N-1)/2的值,即第(N+1)/2个数(A0为第1个数)。

    输入格式:

    输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。

    输出格式:

    在一行中输出两个输入序列的并集序列的中位数。

    输入样例1:

    5
    1 3 5 7 9
    2 3 4 5 6
    
     

    输出样例1:

    4
    
     

    输入样例2:

    6
    -100 -10 1 1 1 1
    -50 0 2 3 4 5
    
     

    输出样例2:

    1

    思路:建立一个数组,长度为两个序列的总和,将序列中所有数字排序并且存入数组中,然后进行判断。
     1 #include<stdio.h>
     2 int main()
     3 {
     4     int i,k=0,l=0,n;
     5     int mid;
     6     scanf("%d",&n);
     7     int a[n],b[n],c[2*n];
     8     for(i=0;i<n;i++){
     9         scanf("%d",&a[i]);
    10     }
    11     for(i=0;i<n;i++){
    12         scanf("%d",&b[i]);
    13     }
    14     i=0;
    15     while(k<n&&l<n){
    16         if(a[k]>b[l]){
    17             c[i++]=b[l++];
    18         }else{
    19             c[i++]=a[k++];
    20         }
    21     }
    22     while(k<n){
    23         c[i++]=a[k++];
    24     }
    25     while(l<n){
    26         c[i++]=a[l++];
    27     }
    28     mid=c[(i-1)/2];
    29     printf("%d",mid);
    30     return 0;
    31 }


  • 相关阅读:
    jsp文件导包 糖不苦
    java 数字和日期处理 糖不苦
    java时间的一些处理 糖不苦
    Vimdiff 使用
    C++资源不完全索引
    sprintf 函数详细解释
    C++ 时间
    C++的可移植性和跨平台开发
    Solaris下开发64位程序的注意事项
    C/C++ 数学库函数
  • 原文地址:https://www.cnblogs.com/woju/p/12709424.html
Copyright © 2011-2022 走看看