1061 Dating (PAT甲级)
发布人:shili8
发布时间:2025-01-13 19:29
阅读次数:0
**1061 Dating**
**题目描述**
有n个男孩和m个女孩,分别代表为A1、A2、...、An和B1、B2、...、Bm。每个男孩都可以选择与其中一个女孩约会,每个女孩也可以选择与其中一个男孩约会。假设每个男孩都有一个喜好列表,列出了他喜欢的前k名女孩,而每个女孩也有一个喜好列表,列出了她喜欢的前k名男孩。
现在,我们需要计算出所有可能的约会对数目,并且要求输出这些约会对中,每个男孩和女孩都至少有一个共同的喜好女孩或男孩。
**输入**
* n:代表男孩的数量* m:代表女孩的数量* k:每个人喜欢的人数* Aij:表示A_i 喜欢 B_j 的情况(0/1)
* Bij:表示B_i 喜欢 A_j 的情况(0/1)
**输出**
* 最终结果:所有可能的约会对数目**代码实现**
def count_dating(n, m, k, Aij, Bij): # 初始化计数器 count =0 # 遍历每个男孩 for i in range(1, n +1): # 遍历每个女孩 for j in range(1, m +1): # 检查是否有共同的喜好 common_like = False for x in range(1, k +1): if Aij[i][x] == Bij[j][x]: common_like = True break # 如果有共同的喜好,则增加计数 if common_like: count +=1 return count# 测试用例n =3m =4k =2Aij = [[0,1,0], [1,0,1], [0,1,0]] Bij = [[0,1,1,0], [1,0,0,1], [0,1,0,1]] print(count_dating(n, m, k, Aij, Bij)) # 输出结果
**注释**
* `count_dating` 函数负责计算所有可能的约会对数目。
* `Aij` 和 `Bij` 是二维列表,分别代表男孩和女孩的喜好列表。
* `common_like` 变量用于检查是否有共同的喜好。
* `count` 变量用于计数所有可能的约会对。
**时间复杂度**
* 时间复杂度为 O(n * m * k)。
**空间复杂度**
* 空间复杂度为 O(n + m)。