网站备案验证码错误,做网站需要多少钱 做,自建网站推广,wordpress 权重原题传送门#xff1a;1.握手问题 - 蓝桥云课
问题描述
小蓝组织了一场算法交流会议#xff0c;总共有 50人参加了本次会议。在会议上#xff0c;大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 7 个人#xff0c;…原题传送门1.握手问题 - 蓝桥云课
问题描述
小蓝组织了一场算法交流会议总共有 50人参加了本次会议。在会议上大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 7 个人这 7 人彼此之间没有进行握手 (但这 7人与除这 7 人以外的所有人进行了握手)。请问这些人之间一共进行了多少次握手?
注意 A 和 B 握手的同时也意味着 B 和 A 握手了所以算作是一次握手。
答案提交
这是一道结果填空的题你只需要算出结果后提交即可。本题的结果为一个整数在提交答案时只填写这个整数填写多余的内容将无法得分。
问题解析
本题刻意提醒“注意 A 和 B 握手的同时也意味着 B 和 A 握手了所以算作是一次握手。”我们在解题时应该特别注意关注这些提示的字眼其可以在一定程度上减少我们的思维量。
其次请注意基本上所有的编程题都是数学问题我们应当要有将具体问题抽象提炼成其对应的数学问题的能力。
遇到问题不要慌其实我也挺慌的先来提取题中的各种信息
1总共有50人参与
2有七位参与者例外根据题目描述他们与“除这 7 人以外的所有人进行了握手”可能这七人之间有些不可告人的神秘过往
3待求为这些人之间一共进行了多少次握手
到这里本题的基本逻辑就理清楚了我们尝试将其抽象成数学问题
其实只要你数学逻辑比较到位bushi读到这里你应该可以很明确的感受到这就是数学里的排列组合问题
根据题中描述50人本应该是两两之间相互握手如果问题是这五十个人两两之间相互握手求最后的握手次数你应该可以很快反应过来一个数学概念组合数那本题是C呢还是A呢如果你不确定可以摇个骰子试试
如果此时的你对于CA问题摇摆不定或者并不太了解组合数的详细计算方法请点击下方链接前往哔哩哔哩大学老老实实学习完本章的前置知识敲黑板【排列组合20分钟从零基础到高考要求|小姚老师】
同样的对于这七位特立独行的人我们可以敏锐的察觉到对他们的处理将会成为本题的题眼
即针对这七个人的处理我们可以延申出两种本题的解题方向
1正常计算的43人握手次数加上特立独行的7人与其他人之间的握手次数
2正常计算的50人握手次数减去特立独行的7人之间本应该存在的握手次数
本题将采用第二种解法至于第一种希望读者可以自行进行尝试若存在阻碍请在评论区或者后台留言
代码描述
在理清楚本题的基本逻辑之后我们可以尝试着手写代码
1首先实现计算组合数的部分如果你已经具备了解决本题的基本前置知识那你应该可以确定本题的关键是C那么对于C的计算规则实现起来其实非常简单代码如下
# 计算组合数 C(n, 2)即从 50 人中任意选择 2 人进行握手
def comb(n):计算组合数 C(n, 2)return n * (n - 1) // 2
2计算总的握手次数我们使用上面提到的第二种计算方法实现
# 计算总握手次数
def calculate_handshakes(total_people, excluded_people):total_handshakes comb(total_people) # 总人数之间的握手数excluded_handshakes comb(excluded_people) # 排除的7人之间的握手数return total_handshakes - excluded_handshakes
3设置传入的参数调用函数计算结果
# 参数设置
total_people 50
excluded_people 7# 计算结果
result calculate_handshakes(total_people, excluded_people)
print(result)
对上述代码进行汇总得到完整的代码如下
# 计算组合数 C(n, 2)即从 50 人中任意选择 2 人进行握手
def comb(n):计算组合数 C(n, 2)return n * (n - 1) // 2# 计算总握手次数
def calculate_handshakes(total_people, excluded_people):total_handshakes comb(total_people) # 总人数之间的握手数excluded_handshakes comb(excluded_people) # 排除的7人之间的握手数return total_handshakes - excluded_handshakes# 参数设置
total_people 50
excluded_people 7# 计算结果
result calculate_handshakes(total_people, excluded_people)
print(result)
结果提交
执行上述代码得到结果为 写在最后
小玉认为不管是在平时的练习之中亦或是平时的项目开发之中我们都应该有“变量作用如其名”的良好意识这样不仅方便代码的阅读者同样也可以为自身后期的排查与检验省下不少的二力气哦
本题就到这里了由于服务器今年到期(余家贫耕植不能自给续不起了wuwuwuwuwu)所以很遗憾自己的网站没了又开始重操旧业来到csdn创作了hhhhh网站以及资源问题已经在着手解决了往期内容至少还需年后才能继续观看请您多给小玉一些时间调整爱你么么哒