程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 九度OJ 題目1097:取中值

九度OJ 題目1097:取中值

編輯:C++入門知識

*********************************    *    日期: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);               int n2 = (d - c + 1);               int index = (n1 + n2 - 1) / 2;               //在[a b]區間                if(index < n1){                   index = index + a - 1;                   printf("%d\n",arrayA[index]);               }               //在[c d]區間                else{                   index = index - n1 + c - 1;                   printf("%d\n",arrayB[index]);               }           }       }       return 0;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved