文章目录

  • 1. 题目
  • 2. 解题

1. 题目

偶数 个人站成一个圆,总人数为 num_people 。

每个人与除自己外的一个人握手,所以总共会有 num_people / 2 次握手。

将握手的人之间连线,请你返回连线不会相交的握手方案数。

由于结果可能会很大,请你返回答案 模 10^9+7 后的结果。

示例 1:
输入:num_people = 2
输出:1

示例 2:

输入:num_people = 4
输出:2
解释:总共有两种方案,
第一种方案是 [(1,2),(3,4)] ,
第二种方案是 [(2,3),(4,1)] 。

示例 3:

输入:num_people = 6
输出:5示例 4:
输入:num_people = 8
输出:14提示:
2 <= num_people <= 1000
num_people % 2 == 0

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/handshakes-that-dont-cross
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 考虑 n 个人, 1号跟其他的偶数号握手才可以,不然有落单的,总计 n/2 次
  • 1号跟另一个人握手,把人群分成了两个子问题,两边的数量相乘即可,n-2人,分成2半(0,n-2)(2, n-4)…
class Solution {public:int numberOfWays(int num_people) {if(num_people == 2) return 1;if(num_people == 4) return 2;vector<long long> dp(num_people+1, 0);dp[0] = 1;dp[2] = 1;dp[4] = 2;for(int i = 6; i <= num_people; i += 2){for(int j = 0; j < i/2; ++j){dp[i] = (dp[i]+dp[2*j]*dp[i-2-2*j])%1000000007;}}return dp[num_people];}
};

28 ms 6.6 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1259. 不相交的握手(DP)相关推荐

  1. LeetCode 85. 最大矩形(DP/单调递增栈,难)

    文章目录 1. 题目 2. 解题 2.1 DP 2.2 单调递增栈 1. 题目 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 示例: 输入: [[" ...

  2. LeetCode 221. 最大正方形(DP)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积. 示例: 来源:力扣(LeetCode) 链接:https:/ ...

  3. LeetCode 1035. 不相交的线(最长公共子序列DP)

    文章目录 1. 题目 2. 解题 1. 题目 我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数. 现在,我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线,只要 A[i] == ...

  4. leetcode 1035. 不相交的线(dp)

    在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数. 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足: nums1[i ...

  5. LeetCode 1105. 填充书架(DP)

    文章目录 1. 题目 2. 解题 1. 题目 附近的家居城促销,你买回了一直心仪的可调节书架,打算把自己的书都整理到新的书架上. 你把要摆放的书 books 都整理好,叠成一摞:从上往下,第 i 本书 ...

  6. LeetCode 656. 金币路径(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个数组 A(下标从 1 开始)包含 N 个整数:A1,A2,--,AN 和一个整数 B. 你可以从数组 A 中的任何一个位置(下标为 i)跳到下标 ...

  7. LeetCode 1230. 抛掷硬币(DP)

    文章目录 1. 题目 2. 解题 1. 题目 有一些不规则的硬币.在这些硬币中,prob[i] 表示第 i 枚硬币正面朝上的概率. 请对每一枚硬币抛掷 一次,然后返回正面朝上的硬币数等于 target ...

  8. LeetCode 174. 地下城游戏(DP)

    文章目录 1. 题目 2. 解题 1. 题目 一些坏人抓住了公主(P)并将她关在了地下城的右下角. 地下城是由 M x N 个房间组成的二维网格. 我们英勇的骑士(K)最初被安置在左上角的房间里, 他 ...

  9. LeetCode 256. 粉刷房子(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...

最新文章

  1. 前端学PHP之面向对象系列第四篇——关键字
  2. STM32 UART串口驱动程序
  3. 库克的采访给我们带来的思考!
  4. Linux (七) 网络
  5. AS 中 Plugin for Gradle 和 Gradle 之间的版本对应关系
  6. Mac中搭建Kubernetes
  7. 用别的表格中数据进行计算机,tusimpleBI 做的图表,别的电脑可以打开吗?
  8. Linux 命令(18)—— screen 命令
  9. python编程入门-Python编程:从入门到实践 PDF 中文扫描版
  10. oracle architeture,ORACLE 11G Process Architecture(一)
  11. [转载] python getattr_Python中的异常处理
  12. 双主动桥隔离双向DC-DC变换器(三) 控制策略
  13. 网吧如何控制远程服务器,怎样在网吧控制一台远程的电脑
  14. 计算机Wor表格制作斜线表头,Word文档里怎么画表格斜线表头
  15. 芯科技之AD7705介绍
  16. SBC在企业IP通信系统中的应用
  17. flink程序:Exceeded checkpoint tolerable failure threshould
  18. 部落冲突-建筑大师基地军队建筑介绍(兵营、建筑大师训练营、星空实验室、战争机器)
  19. 计算机网络统考outlook操作视频,网络教育计算机统考Outlook
  20. service XXX restart的执行流程

热门文章

  1. java发送c语言结构体_C语言中结构体直接赋值?
  2. 关于未捕获异常的处理(WPF)
  3. python 全栈开发,Day63(子查询,MySQl创建用户和授权,可视化工具Navicat的使用,pymysql模块的使用)...
  4. Raspbian 中国软件源
  5. java----IO和NIO的区别
  6. DOM getElementById
  7. 回溯算法--8皇后问题
  8. InterDev 调试错误信息: Unable to set server into correct debugging state automatically....的解决办法...
  9. PostgreSQL体系架构
  10. linux编译动态库之fPIC