首页 > 试题广场 >

5-血型遗传检测

[编程题]5-血型遗传检测
  • 热度指数:7563 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

血型遗传对照表如下:

父母血型 子女会出现的血型 子女不会出现的血型
O与O O A,B,AB
A与O A,O B,AB
A与A A,O B,AB
A与B A,B,AB,O ——
A与AB A,B,AB O
B与O B,O A,AB
B与B B,O A,AB
B与AB A,B,AB O
AB与O A,B O,AB
AB与AB A,B,AB O
请实现一个程序,输入父母血型,判断孩子可能的血型。

给定两个字符串fathermother,代表父母的血型,请返回一个字符串数组,代表孩子的可能血型(按照字典序排列)。

测试样例:
”A”,”A”
返回:[”A”,“O”]
找规律:
1.有AB的孩子必没O,一定有A和B。如果有一方为O则没有AB,否则有AB
2.父母都没AB,孩子必有O。父母双方有A的孩子必有A,父母双方有B的孩子必有B,如果父母双方凑齐了A和B的话孩子有AB。

# -*- coding:utf-8 -*-

class ChkBloodType:
    def chkBlood(self, father, mother):
        # write code here
        # Initialization
        results = []
        # Traverse
        if father == 'AB'&nbs***bsp;mother == 'AB':
            if father == 'O'&nbs***bsp;mother == 'O':
                results = ['A', 'B']
            else:
                results = ['A', 'B', 'AB']
        else:
            results.append('O')
            aFlag = father == 'A'&nbs***bsp;mother == 'A'
            bFlag = father == 'B'&nbs***bsp;mother == 'B'
            if aFlag:
                results.append('A')
            if bFlag:
                results.append('B')
            if aFlag and bFlag:
                results.append('AB')
        results.sort()
        return results
发表于 2024-08-24 16:00:39 回复(0)