当前位置:编程学习 > C/C++ >>

九度OJ 题目1097:取中值

*********************************  
 *    日期:2013-2-5 
 *    作者:SJF0115  
 *    题号: 九度OJ 题目1097:取中值 
 *    来源:http://ac.jobdu.com/problem.php?pid=1097 
 *    结果:AC  
 *    来源:2009年上海交通大学计算机研究生机试真题 
 *    总结:本题求的是中间值不是中位数,不用排序。 
**********************************/   
#include<stdio.h>   
#include<stdlib.h>   
#include<string.h>   
  
int arrayA[1000001];  
int arrayB[1000001];  
int arrayC[2000002];  
  
int main()  
{  
    int n,i,j,m,index,lena,lenb;  
    int a,b,c,d;  
    //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);    
    while(scanf("%d",&n)!=EOF)  
    {  
        for(i = 0;i < n;i++){  
            //数组长度   
            scanf("%d %d",&lena,&lenb);  
            //第一个数组   
            for(j = 0;j < lena;j++){  
                scanf("%d",&arrayA[j]);  
            }  
            //第二个数组   
            for(j = 0;j < lenb;j++){  
                scanf("%d",&arrayB[j]);  
            }  
            scanf("%d %d %d %d",&a,&b,&c,&d);  
            //合并数组   
            index = 0;  
            //第一个数组第a个数到第b个数   
            for(j = a-1;j < b;j++){  
                arrayC[index++] = arrayA[j];  
            }  
            //第二个数组的第c个数到第d个数   
            for(j = c-1;j < d;j++){  
                arrayC[index++] = arrayB[j];  
            }  
            //中间值   
            printf("%d\n",arrayC[(index-1)/2]);  
        }  
    }  
    return 0;  
}  
 
/********************************* 
 *    日期:2013-2-5
 *    作者:SJF0115 
 *    题号: 九度OJ 题目1097:取中值
 *    来源:http://ac.jobdu.com/problem.php?pid=1097
 *    结果:AC 
 *    来源:2009年上海交通大学计算机研究生机试真题
 *    总结:本题求的是中间值不是中位数,不用排序。
**********************************/ 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
int arrayA[1000001];
int arrayB[1000001];
int arrayC[2000002];
 
int main()
{
    int n,i,j,m,index,lena,lenb;
int a,b,c,d;
//freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); 
    while(scanf("%d",&n)!=EOF)
    {
        for(i = 0;i < n;i++){
//数组长度
scanf("%d %d",&lena,&lenb);
//第一个数组
for(j = 0;j < lena;j++){
scanf("%d",&arrayA[j]);
}
//第二个数组
for(j = 0;j < lenb;j++){
scanf("%d",&arrayB[j]);
}
scanf("%d %d %d %d",&a,&b,&c,&d);
//合并数组
index = 0;
//第一个数组第a个数到第b个数
for(j = a-1;j < b;j++){
arrayC[index++] = arrayA[j];
}
//第二个数组的第c个数到第d个数
for(j = c-1;j < d;j++){
arrayC[index++] = arrayB[j];
}
//中间值
printf("%d\n",arrayC[(index-1)/2]);
}
    }
    return 0;
}
 
 
 
[cpp] 
/*********************************  
 *    日期:2013-2-5 
 *    作者:SJF0115  
 *    题号: 九度OJ 题目1097:取中值 
 *    来源:http://ac.jobdu.com/problem.php?pid=1097 
 *    结果:AC  
 *    来源:2009年上海交通大学计算机研究生机试真题 
 *    总结:本题求的是中间值不是中位数,不用排序。 
**********************************/   
#include<stdio.h>   
#include<stdlib.h>   
#include<string.h>   
  
int arrayA[1000001];  
int arrayB[1000001];  
  
int main()  
{  
    int n,i,j,m,index,lena,lenb;  
    int a,b,c,d;  
    //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);    
    while(scanf("%d",&n)!=EOF)  
    {  
        for(i = 0;i < n;i++){  
            //数组长度   
            scanf("%d %d",&lena,&lenb);  
            //第一个数组   
            for(j = 0;j < lena;j++){  
                scanf("%d",&arrayA[j]);  
            }  
            //第二个数组   
            for(j = 0;j < lenb;j++){  
                scanf("%d",&arrayB[j]);  
            }  
            scanf("%d %d %d %d",&a,&b,&c,&d);  
            int n1 = (b - a + 1);  
   
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,