1029. Median (25)

本文针对PAT-A 1029题目提供了一种解决方案,通过合并两个有序序列来找出它们合并后的中位数。使用了下标计数的方法,并提供了完整的C++实现代码。

1. 原题:https://www.patest.cn/contests/pat-a-practise/1029

2. 思路:

题意:
比较简单,就是求两个有序序列合并后的中位数。
思路:有多种方法。
可以用队列,也可以数下标。
由于数据较多,不知直接用sort是否可行。
此处采用数下标,数到中间的输出即可。
注:有两个1分的测试点未过,欢迎指正。

3. 源码(有2个1分测试点未过):

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long int lint;

int main()
{
	//freopen("in.txt", "r", stdin);
	int N, M;
	scanf("%d", &N);
	vector<lint> a(N);
	for(int i = 0; i < N; i++)//读入数据
		scanf("%d", &a[i]);
	
	scanf("%d", &M);
	vector<lint> b(M);
	for(int i = 0; i < M; i++)
		scanf("%d", &b[i]);

	int middle = (N+M-1)/2 + 1;	//中位数的位置,从1开始
	int i;
	int j = 0, k = 0;
	lint mid;	//存储中位数
	for (i = 0; i < middle && j < N && k < M; i++)	//数下标
	{
		if (a[j] <= b[k])
		{
			mid = a[j];
			j++;
		}
		else
		{
			mid = b[k];
			k++;
		}
	}
	while(i < middle)	//表明某个序列输完了
	{
		if(j == N)
		{
			mid = b[k];
			k++;
		}
		else
		{
			mid = a[j];
			j++;
		}
		i++;
	}
	cout << mid << endl;

	return 0;
}


分析下列代码作用,用for循环达成效果 代码如下: df_cleanID['是否吃大米'].median() df_cleanID['平均每次食用量'].median() df_cleanID['是否吃小麦面粉'].median() df_cleanID['平均每次食用量.1'].median() df_cleanID['是否吃杂粮'].median() df_cleanID['平均每次食用量.2'].median() df_cleanID['是否吃薯类'].median() df_cleanID['平均每次食用量.3'].median() df_cleanID['是否吃油炸面食'].median() df_cleanID['平均每次食用量.4'].median() df_cleanID['是否吃猪肉'].median() df_cleanID['平均每次食用量.5'].median() df_cleanID['是否吃牛羊肉'].median() df_cleanID['平均每次食用量.6'].median() df_cleanID['是否吃禽肉'].median() df_cleanID['平均每次食用量.7'].median() df_cleanID['是否吃内脏类'].median() df_cleanID['平均每次食用量.8'].median() df_cleanID['是否吃水产类'].median() df_cleanID['平均每次食用量.9'].median() df_cleanID['是否吃鲜奶'].median() df_cleanID['平均每次食用量.10'].median() df_cleanID['是否吃奶粉'].median() df_cleanID['平均每次食用量.11'].median() df_cleanID['是否吃酸奶'].median() df_cleanID['平均每次食用量.12'].median() df_cleanID['是否吃蛋类'].median() df_cleanID['平均每次食用量.13'].median() df_cleanID['是否吃豆腐'].median() df_cleanID['平均每次食用量.14'].median() df_cleanID['是否吃豆腐丝等'].median() df_cleanID['平均每次食用量.15'].median() df_cleanID['是否吃豆浆'].median() df_cleanID['平均每次食用量.16'].median() df_cleanID['是否吃干豆'].median() df_cleanID['平均每次食用量.17'].median() df_cleanID['是否吃新鲜蔬菜'].median() df_cleanID['平均每次食用量.18'].median() df_cleanID['是否吃海草类'].median() df_cleanID['平均每次食用量.19'].median() df_cleanID['是否吃咸菜'].median() df_cleanID['平均每次食用量.20'].median() df_cleanID['是否吃泡菜'].median() df_cleanID['平均每次食用量.21'].median() df_cleanID['是否吃酸菜'].median() df_cleanID['平均每次食用量.22'].median() df_cleanID['是否吃糕点'].median() df_cleanID['平均每次食用量.23'].median() df_cleanID['是否吃水果'].median() df_cleanID['平均每次食用量.24'].median() df_cleanID['是否吃果汁饮料'].median() df_cleanID['平均每次食用量.25'].median() df_cleanID['是否吃其他饮料'].median() df_cleanID['平均每次食用量.26'].median()
最新发布
03-30
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值