• 浙江大学PAT上机题解析之2-13. 两个有序序列的中位数


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

    输入格式说明:

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

    输出格式说明:

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

    样例输入与输出:

     

    序号 输入 输出
    1
    5
    1 3 5 7 9
    2 3 4 5 6
    
    4
    
    2
    6
    -100 -10 1 1 1 1
    -50 0 2 3 4 5
    
    1
    
    3
    3
    1 2 3
    4 5 6
    
    3
    
    4
    3
    4 5 6
    1 2 3
    
    3
    
    5
    1
    2
    1
    
    1
    
    #include <cstdio>
    #include <cstring>
    //#include <iostream>
    using namespace std;
    
    
    int Node1[100010];
    int Node2[100010];
    
    int main()
    {
    	memset(Node1,0,sizeof(Node1));
    	memset(Node2,0,sizeof(Node2));
    	int N=0;
    	int mid=0;
    	int flag=0;
    	int k=0;
    	int i=0,j=0;
    /*	cin>>N;*/
    	scanf("%d",&N);
    	int temp=N;
    	mid = (2*N+1)/2;
    	while(temp--)
    	{
    	/*	cin>>Node1[i++];*/
    		scanf("%d",&Node1[i++]);
    	}
    	temp=N;
    	while(temp--)
    	{
        /*cin>>Node2[j++];*/
    	scanf("%d",&Node2[j++]);
    	}
    	for (i=0,j=0;i<N&&j<N;)
    	{
    		k=i+j+2;
    		if (Node1[i]>=Node2[j])
    		{
    			flag=1;
    			j++;
    		}
    		else 
    		{
    			flag=2;
    			i++;
    		}
    
    	if (k==N)
    	{
    		if (flag==1)
    		{
    			if (Node2[j]<Node1[i])
    	       /* cout<<Node2[j]<<endl;*/
    		   printf("%d
    ",Node2[j]);
    			else
    		/*	cout<<Node1[i]<<endl;*/
    		  printf("%d
    ",Node1[i]);
    		}
    		if (flag==2)
    		{
    			 if (Node1[i]<Node2[j])
    	     /*   cout<<Node1[i]<<endl;*/
    			  printf("%d
    ",Node1[i]);
    			else
    			/* cout<<Node2[j]<<endl;*/
    			   printf("%d
    ",Node2[j]);
    		}
    		
    		break;
    	}
    	
    	}
    	if (N==1)
    	{
    		if (Node1[0]<Node2[0])
    		printf("%d
    ",Node1[0]);
    		else
    		printf("%d
    ",Node2[0]);
    		
    	}
    	
    	
    	//system("pause");
    	return 0;
    }

    //iostream的输入输出最后一个CASE会超时,换成stdio就好了,我这一题主要卡在了N==1这一点,调了半天才发现我的K值是大于等于2的,晕死@~@

  • 相关阅读:
    WPF中的控件布局
    [转]WPF, WPF/E释疑
    创建像Vista任务栏一样的半透明玻璃按钮
    WPF中的TextBlock
    .net 2.0 文档生成工具
    XNA Game Studio Express 1.0正式版 发布
    WPF免费视频教程,来自Lynda.com
    WPF中的ControlTemplate(控件模板)
    获奖啦, 微软亚洲研究院第九届学生实践项目
    [转]让用户通过宏和插件向您的 .NET 应用程序添加功能
  • 原文地址:https://www.cnblogs.com/ainima/p/6331251.html
Copyright © 2020-2023  润新知