九度OJ 1097 取中值
来源:互联网 发布:翻墙软件一点通 编辑:程序博客网 时间:2024/06/06 09:34
- 题目描述:
存在两组数组,和4个数字a,b,c,d,要求做如下操作,将第一个数组第a个数到第b个数,第二个数组的第c个数到第d个数放到一个数组中,求出合并后数组的中间值,如果有两个中间值,取下标较小的那个。
- 输入:
第一行一个整数t表示有t个测试数据
第二行两个整数,表示两个数组的长度,
接下来两行表示两个数字的值,最后一行有四个整数a,b,c,d。
数组长度不会超过1000000。
- 输出:
每行一个整数,对应合并数组的下标在中间的那个值。
- 样例输入:
15 41 2 3 4 56 7 8 91 21 3
- 样例输出:
6
然后发现,C++写的严重超时,原因是cin,cout太占时间,一写出来就知道错哪里了。然后改成C语言格式,又发现数组开到100万崩掉了。很奇怪,之前C++写的程序为啥没有出现问题。后来改用new,动态生成数组空间大小。立马Accept
#include <stdio.h>int main(){int t;scanf("%d",&t);while(t--){int len1,len2;scanf("%d%d",&len1,&len2);int *A = new int[len1];int *B = new int[len2];int *C = new int[len1+len2];for(int i=0;i<len1;i++){scanf("%d",&A[i]);}for(int i=0;i<len2;i++){scanf("%d",&B[i]);}int a,b,c,d;scanf("%d%d%d%d",&a,&b,&c,&d);int k = 0;for(int i=a-1;i<=b-1;i++){C[k++] = A[i];}for(int i=c-1;i<d-1;i++){C[k++] = B[i];}printf("%d\n",C[k/2]);}return 0;}
这道题在看完之后,觉得理解的很是费劲。不知道这里的中值是数值上的中间,还是位置上的中间。还有第几个数,不清楚是从数组下标0开始 还是从 1 开始。但是我还是按照正确的理解写了出来。
0 0
- 九度OJ 题目1097:取中值
- 九度OJ 1097 取中值
- 九度OJ 1097 取中值
- 九度OJ 1097:取中值 (中值)
- 九度1097:取中值
- 九度题目1097:取中值
- 题目1097:取中值
- 题目1097:取中值
- 题目1097:取中值
- 九度oj 1097
- 取中值
- 【九度OJ】:九度OJ 1050
- 【九度OJ】:九度OJ 1053
- 【九度OJ】:九度OJ 1056
- 【九度OJ】:九度OJ 1059
- 【九度OJ】:九度OJ 1206
- 九度OJ:1000
- 【九度OJ】 1006
- Android JNI开发基础
- JS常用算法-个人整理
- C#选择排序的实现
- selector+shape结合使用
- 理解Buffer
- 九度OJ 1097 取中值
- hdu2767 Proving Equivalences
- Spring定时任务的几种实现
- Linux服务-SSHD
- 数据结构实验之二叉树二:遍历二叉树 (sdut OJ 3341)
- HDU1061——Rightmost Digit
- LeetCode | Recover Binary Search Tree
- 对分法(二分法)求解非线性方程-M语言
- 一道学java (一)java入门