Vitality.fff 2023-03-29 12:20 采纳率: 65.2%
浏览 33
已结题

关于#数据结构#构建朋友圈的问题,如何解决?

img

有8个人组成一个朋友圈,其中各人对朋友有一个初始评分,分值越高说明该朋友在其心目中越重要。初始评分表如下(每行代表各人对其他人的评分):见图片

经过一段时间,各人对其中部分朋友的评分发生了改变。
赵:周4----周1,郑0---郑3
孙:李1---李5
吴:孙2---孙5,王6---王1
郑:李1---李3,吴2---吴6
王:吴3---吴1
===========================================================================
用所学数据结构实现如上朋友圈;
(1),用初始表初始化朋友圈;
(2),用所给数据更新朋友圈;
(3),当从键盘输入某人的汉语拼音时,按照其朋友的重要性(数值从小到大)打印其朋友圈(可以是汉语,也可以是汉语拼音)。

  • 写回答

3条回答 默认 最新

  • Yamerger 2023-03-29 13:11
    关注

    这道题可以使用邻接矩阵来实现朋友圈,并使用字典来将人名与邻接矩阵中的下标对应起来。下面是Python的实现代码:

    python
    Copy code

    # 初始化邻接矩阵
    graph = [
        [0, 5, 3, 4, 0, 0, 0, 0],
        [5, 0, 2, 0, 0, 0, 0, 4],
        [3, 2, 0, 0, 4, 0, 0, 0],
        [4, 0, 0, 0, 0, 0, 0, 2],
        [0, 0, 4, 0, 0, 3, 0, 0],
        [0, 0, 0, 0, 3, 0, 6, 0],
        [0, 0, 0, 0, 0, 6, 0, 1],
        [0, 4, 0, 2, 0, 0, 1, 0]
    ]
    
    # 人名与邻接矩阵下标的映射字典
    name_dict = {
        "赵": 0,
        "钱": 1,
        "孙": 2,
        "李": 3,
        "周": 4,
        "吴": 5,
        "郑": 6,
        "王": 7
    }
    
    # 更新朋友圈
    graph[name_dict["赵"]][name_dict["周"]] = 1
    graph[name_dict["赵"]][name_dict["郑"]] = 3
    graph[name_dict["孙"]][name_dict["李"]] = 5
    graph[name_dict["吴"]][name_dict["孙"]] = 5
    graph[name_dict["吴"]][name_dict["王"]] = 1
    graph[name_dict["郑"]][name_dict["李"]] = 3
    graph[name_dict["郑"]][name_dict["吴"]] = 6
    
    # 打印某人的朋友圈
    person = input("请输入某人的汉语拼音:")
    if person not in name_dict:
        print("无此人")
    else:
        index = name_dict[person]
        friends = []
        for i, score in enumerate(graph[index]):
            if score > 0:
                friends.append((score, i))
        friends.sort()
        print(person + "的朋友圈:")
        for score, i in friends:
            print(list(name_dict.keys())[list(name_dict.values()).index(i)], end=" ")
            print("(" + str(score) + ")", end=" ")
        print()
    
    

    代码中,我们首先使用一个8x8的邻接矩阵来表示朋友圈,其中每个元素表示两个人之间的关系,0表示不认识,大于0的整数表示关系的紧密程度。然后,我们使用一个字典将人名与邻接矩阵中的下标对应起来。接着,我们根据题目给出的数据更新邻接矩阵。最后输入人名获取数据

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月1日
  • 已采纳回答 4月1日
  • 创建了问题 3月29日

悬赏问题

  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式
  • ¥50 potsgresql15备份问题
  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错