您的位置:首页 > 娱乐 > 明星 > 动画设计培训学校排名_企业宣传软文_免费代理上网网站_店铺数据分析主要分析什么

动画设计培训学校排名_企业宣传软文_免费代理上网网站_店铺数据分析主要分析什么

2025/2/25 6:25:36 来源:https://blog.csdn.net/qq_47991812/article/details/143453382  浏览:    关键词:动画设计培训学校排名_企业宣传软文_免费代理上网网站_店铺数据分析主要分析什么
动画设计培训学校排名_企业宣传软文_免费代理上网网站_店铺数据分析主要分析什么

问题来源:【秋招突围】2024届秋招-京东笔试题-第三套_牛客网

问题描述

K小姐经营着一家蛋糕店,她的蛋糕店有 n种口味的蛋糕。这 n 种口味的蛋糕在 A 工厂和 B 工厂都有生产。

对于每种口味的蛋糕,如果 A 工厂生产的口感值为 AiA_iAi​,价格为 CiC_iCi​;B 工厂生产的口感值为 BiB_iBi​,价格为 DiD_iDi​。K小姐会比较两个工厂生产的同一口味蛋糕,如果 Ai>BiA_i > B_iAi​>Bi​ 且 Ci<DiC_i < D_iCi​<Di​,那么她会选择从 A 工厂进货这种口味的蛋糕;如果 Bi>AiB_i > A_iBi​>Ai​ 且 Di<CiD_i < C_iDi​<Ci​,那么她会选择从 B 工厂进货这种口味的蛋糕;如果两个工厂生产的蛋糕口感值和价格都相同,或者一个工厂口感值更高但价格也更高,那么K小姐就不会选择进货这种口味的蛋糕。

现在给定 n 种口味蛋糕在两个工厂的口感值和价格,请问K小姐最终会选择进货多少种口味的蛋糕?

输入格式

第一行输入一个整数 n,表示蛋糕的口味数量。

第二行输入 n 个整数,分别表示 A1,A2,…,AnA_1, A_2, \dots, A_nA1​,A2​,…,An​,即 A 工厂生产的 n 种口味蛋糕的口感值。

第三行输入 n 个整数,分别表示 B1,B2,…,BnB_1, B_2, \dots, B_nB1​,B2​,…,Bn​,即 B 工厂生产的 n 种口味蛋糕的口感值。

第四行输入 n 个整数,分别表示 C1,C2,…,CnC_1, C_2, \dots, C_nC1​,C2​,…,Cn​,即 A 工厂生产的 n 种口味蛋糕的价格。

第五行输入 n 个整数,分别表示 D1,D2,…,DnD_1, D_2, \dots, D_nD1​,D2​,…,Dn​,即 B 工厂生产的 n 种口味蛋糕的价格。

输出格式

输出一个整数,表示K小姐最终选择进货的蛋糕口味数量。

代码详细分析

输入部分

  • n = int(input()):这行代码首先从用户那里获取一个整数输入,并将其赋值给变量 n。不过,在后续的代码中,并没有直接使用到这个 n,可能是代码编写过程中存在部分未完成或者多余的输入获取操作。
  • lis = []:初始化一个空列表 lis,用于后续存储输入的数据。
  • 接下来的循环:
for i in range(0, 4):lis.append(list(map(int, list(input().split()))))

这个循环会执行 4 次,每次从用户那里获取一行以空格分隔的整数输入,先通过 split() 方法将输入的字符串按空格分割成字符串列表,然后通过 map(int,...) 将每个字符串转换为整数,最后再通过 list() 将映射后的可迭代对象转换为列表并添加到 lis 中。这样,lis 最终会包含 4 个子列表,每个子列表存储了一行输入的整数数据。

数据处理与字典创建部分

  • A = dict(zip(lis[0], lis[2])) 和 B = dict(zip(lis[1], lis[3]))
    这里使用了 zip() 函数将 lis 中的特定子列表进行组合,然后通过 dict() 函数将组合后的键值对创建为两个字典 A 和 B。具体来说,A 的键来自 lis[0],值来自 lis[2]B 的键来自 lis[1],值来自 lis[3]

获取字典键列表与计数部分

  • keyA_tast = list(A.keys()); keyB_tast = list(B.keys())
    这两行分别获取字典 A 和 B 的键,并将它们转换为列表形式存储在 keyA_tast 和 keyB_tast 中。
  • 接下来的循环:
count = 0
for i in range(len(keyA_tast)):ATast = keyA_tast[i]; BTast = keyB_tast[i]AValue = A[ATast]; BValue = B[BTast]if ATast > BTast and AValue < BValue or ATast < BTast and AValue > BTast:count += 1

首先初始化一个计数变量 count 为 0。然后通过循环遍历 keyA_tast(由于假设 keyA_tast 和 keyB_tast 长度相同,这里只遍历 keyA_tast 的长度即可同时处理两个字典对应位置的元素)。在每次循环中,获取 A 和 B 字典中对应位置的键(ATast 和 BTast)以及对应的值(AValue 和 BValue)。然后通过条件判断,如果满足 ATast 大于 BTast 且 AValue 小于 BValue,或者 ATast 小于 BTast 且 AValue 大于 BTast 这两种情况之一,就将计数变量 count 加 1。

输出部分

  • print(count):最后输出满足上述条件的元素对的数量。
n = int(input())
lis = []
for i in range(0,4):lis.append(list(map(int,list(input().split()))))
A = dict(zip(lis[0],lis[2]));B = dict(zip(lis[1],lis[3]))
keyA_tast = list(A.keys());keyB_tast = list(B.keys())
count = 0
for i in range(len(keyA_tast)):ATast = keyA_tast[i];BTast = keyB_tast[i]AValue = A[ATast];BValue = B[BTast]if ATast > BTast and AValue < BValue or ATast < BTast and AValue > BTast:count += 1
print(count)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com