题目说明

用绳子连接纸杯制作“纸杯电话”——这应该勾起了很多人对理科实验的回忆。
如果把绳子拉直,对着一边的纸杯讲话,声音就可以从另一边的纸杯传出。
假设有几个小朋友以相同间隔围成圆周,要结对用纸杯电话相互通话。
如果绳子交叉,很有可能会缠绕起来,所以结对的原则是不能让绳子交叉。
举个例子,如果有 6 个小朋友,则只要如下图一样结对,
就可以顺利用纸杯电话通话。也就是说,6 个人的时候,有 5 种结对方式。

求:有 16 个小朋友的时候,一共有多少种结对方式?

思路

1.将16个小朋友分成两组,每组都是偶数个小朋友(分割线也占两个小朋友)
2.比如第一组有x种结对方式,第二组有y种结对方式,则一共有x*y种结对方式
    比如有4对小朋友(8人),则结对方式如下图所示

假设用pair[4]表示4对小朋友时一共有多少种结对方式,则根据上图可以得出如下结论:
    pair[4] = pair[0]*pair[3] + pair[1]*pair[2] + pair[2]*pair[1] + pair[3]*pair[0]

代码

public static void main(String[] args) {int n = 16; // 小朋友的人数int [] pair = new int[n / 2 + 1]; // 下标表示小朋友有几对,元素的值表示结对方式有几种。// 比如pair[3]=5表示3对小朋友的结对方式有5种pair[0] = 1; // 因为要相乘,所以设为1// 计算i对小朋友的结对方式有几种for(int i = 1; i <= n/2; i ++){// 结合思路中的图,可得如下规律for(int j = 0; j < i; j ++){pair[i] += pair[j] * pair[i - j - 1];}}System.out.println(pair[n/2]); // pair数组:[1, 1, 2, 5, 14, 42, 132, 429, 1430]
}

结果

1430

程序员的算法趣题:Q22 不缠绕的纸杯电话(Java版)相关推荐

  1. 程序员的算法趣题Q22: 不缠绕的纸杯电话

    目录 1. 问题描述 2. 解题分析 3. 代码及测试 1. 问题描述 用绳子连接纸杯制作"纸杯电话"--这应该勾起了很多人对理科实验的回忆.如果把绳子拉直,对着一边的纸杯讲话,声 ...

  2. 程序员的算法趣题:Q13 有多少种满足字母算式的解法(Java版)

    题目说明 所谓字母算式,就是用字母表示的算式, 规则是相同字母对应相同数字,不同字母对应不同数字, 并且第一位字母的对应数字不能是 0. 譬如给定算式 We * love = CodeIQ,则可以对应 ...

  3. php算法求出一个数可以被分解成多少个_程序员的算法趣题

    计算机的世界每天都在发生着深刻的变化.新操作系统的发布.CPU性能的提升.智能手机和平板电脑的流行.存储介质的变化.云的普及--这样的变化数不胜数. 在这样日新月异的时代中,"算法" ...

  4. LeetBook《程序员的算法趣题》Q18---水果酥饼日

    <程序员的算法趣题>-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言. Q18 水果酥饼日   日本每月的 22 日是水果酥 ...

  5. 程序员的算法趣题Q50: 完美洗牌

    目录 1. 问题描述 2. 解题分析 2.1 思路1 2.2 思路2 3. 代码及测试 4. 后记 1. 问题描述 问题:对2n张牌洗牌,并求当1<=n<=100时,一共有多少个n可以使得 ...

  6. 程序员的算法趣题Q09: 落单的男女

    目录 1. 问题描述 2. 解题分析 3. 代码及测试 4. 思考 1. 问题描述 人们聚集在某个活动会场上,根据到场顺序排成一排等待入场,活动的主办人员,想把人们从队列的某个位置分成两组,想要让分开 ...

  7. 程序员的算法趣题Q55: 平分蛋糕

    目录 1. 问题描述 2. 解题分析 2.1 初始算法流程 2.2 优化 3. 代码及测试 4. 后记 1. 问题描述 2. 解题分析 这个题目第一感就是动态规划. 对于(m, n)形状(如下图所示, ...

  8. 程序员的算法趣题Q67: 不挨着坐是一种礼节吗?

    目录 1. 问题描述 2. 解题分析 2.1 基本思路 2.2 动态规划 2.3 算法流程 3. 代码及测试 4. 后记 1. 问题描述 注意,本问题不区分人,只考虑各个座位被占用的不同顺序的个数. ...

  9. 程序员的算法趣题Q68: 异性相邻的座位安排(1)

    目录 1. 问题描述 2. 解题分析 3. 代码及测试 4. 后记 1. 问题描述 这道题的描述应该是有问题的(不知道是原文的问题还是翻译的问题). 前面的描述中提到"前后左右的座位全是异性 ...

  10. 程序员的算法趣题Q57: 最快的联络网

    目录 1. 问题描述 2. 解题分析 2.1 学生的状态 2.2 学生状态转移 Case-T1:Do nothing, just wait Case-T2:给处于S0状态的学生打电话 Case-T3: ...

最新文章

  1. 如果CRC等于炒鸡蛋,那么...
  2. android web 打印,Android设备WebView打印Console Log
  3. python 获取行列号两个数组相等_python – 寻找在numpy中找到两个相等长度数组之间精确重叠的最快方法...
  4. java 中for循环中重复定义的变量 为什么不报错?
  5. RTX5 | 信号量01 - 信号量的使用
  6. MyBatis复习(五):获取多表关联查询结果
  7. 一加9R将推12+256GB新版本:骁龙870+120Hz高刷屏
  8. P1551 亲戚题解
  9. 清除SQLServer2008缓存
  10. OC基础(一)——从C开始初步了解OC
  11. 拆弹实验-phase_7(隐藏关)
  12. JavaWeb-16 (E家园项目案例1)
  13. STM32理论 —— 综述、GPIO
  14. Web前端案例——学成网首页制作
  15. python模拟app发送请求失败_如何使用Tensorflow解决Python Chatbot App的运行会话失败问题...
  16. web 前端签名插件_signature_pad插件实现电子签名功能
  17. React 项目性能分析及优化
  18. 自动驾驶网络:为什么需要自动驾驶网络?
  19. 我的世界服务器宝石系统,我的世界1.9-1.7宝石镶嵌插件
  20. TX2--wifi模块开启AP路由功能

热门文章

  1. win10配置更新怎么关闭计算机,win10专业版关闭自动更新_win10专业版怎么设置不更新...
  2. 移动硬盘格式化后数据怎么恢复
  3. 如何划分音节并区分重读和非重读
  4. 乐观者和悲观者的成功密码
  5. SAP Marketing Cloud Contact 模型的导入配置和数据合并原理
  6. 滴水逆向三期实践15:重定位表修正
  7. Jeff Dean长文展望:2021年之后,机器学习领域的五大潜力趋势
  8. ADODB操作数据库函数DBData和qstr
  9. 配置计算机失败无法开机,Bios设置错误导致电脑无法开机的解决办法!
  10. 数通基础-网络基础知识