大家好,欢迎来到IT知识分享网。
握手问题
【问题描述】
小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手(且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手(但这 7 人与除这 7 人以外的所有人进行了握手)。请问这些人之间一共进行了多少次握手?
注意 A 和 B 握手的同时也意味着 B 和 A 握手了,所以算作是一次握手。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
答案:1204
解题思路
这题稍微模拟一下就好了,比如我设7个人相互握手,其中只有3个人没有相互握手
由题意得:这3 人彼此之间没有进行握手(但这 3 人与除这 3 人以外的所有人进行了握手,所以在图中将最后三人的握手次数剪掉即可
、
由上图得到:最终答案为18
由此可以得到代码:
int ans=0; for(int i=1;i<=7-3;i++) for(int j=i+1;j<=7;j++) ans++; cout<<ans;
模拟
// 引入C++标准库,这通常包含了常用的数据结构和算法。 #include<bits/stdc++.h> using namespace std; // 主函数入口 int main() {
// 定义并初始化答案变量为0,用来存储握手的总次数 int ans=0; // 外层循环遍历除了7个不与彼此握手的人之外的其他所有人 // 这里由于有50个人,7个人彼此之间不握手,所以是从1循环到43 for(int i=1;i<=50-7;i++) // 内层循环遍历当前人(i)之后的所有人(包含7个不与彼此握手的人) // 每对不同的人之间只会计算一次握手,因为握手是双向的 for(int j=i+1;j<=50;j++) ans++; // 每发现一对有效的握手,答案增加1 // 打印出计算得到的握手次数 cout<<ans; // 程序正常结束 return 0; }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/149564.html