menu 小墨迹
more_vert
chevron_right 首页 » 问题&解决方法,奇异见闻 » 练习前两天的文章 三木运算符
练习前两天的文章 三木运算符
2020-10-01 | 问题&解决方法,奇异见闻 | 1 条评论 | 45 次阅读 | 253字

今天一个题目,使用三木运算符比使用if语句好时更短。而之前的一个程序,使用三木运算符,竟然超时了。最近事情多,留待日后研究,先把代码记录。

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 100000

int main()
{
    int S1[MAXSIZE],S2[MAXSIZE];
    int *p1 = S1,*p2 = S2,*p;
    int N;
    scanf("%d",&N);
    int i = N;
    while(i--){
        scanf("%d",p1++);
    }
    i = N;
    while (i--){
        scanf("%d",p2++);
    }
    i = N;
    p1 = S1;
    p2 = S2;
    while (i--){
/*
*在这一块
*下面注释部分和上面语句的区别。
*/
        p = *p1 <= *p2 ? p1++ : p2++;   
//        if (*p1 <= *p2){
//            p = p1++;
//        }else {
//            p = p2++;
//        }

    }
    printf("%d",*p);
    return 0;
}

这是题目

2-6 两个有序序列的中位数 (20分)
已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A
​0
​​ ,A
​1
​​ ,⋯,A
​N−1
​​ 的中位数指A
​(N−1)/2
​​ 的值,即第⌊(N+1)/2⌋个数(A
​0
​​ 为第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
作者
DS课程组
单位
浙江大学
代码长度限制
16 KB
时间限制
200 ms
内存限制
64 MB

添加新评论
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif2016ka.gif2016bb.gif2016qiao.gif2016ll.gif2016shuai.gif2016zj.gif2016zk.gif

    iuio博主
    October 1st, 2020 at 02:19 pm

    电脑高手,哈哈哈哈哈,你这嘴里蹦的都是几几年的形容词啊