题目描述

10343 划分凸多边形(优先做)
时间限制:800MS 代码长度限制:10KB
提交次数:0 通过次数:0

题型: 编程题 语言: G++;GCC;VC;JAVA
Description
问题描述:一个正凸N边形,可以用N-3条互不相交的对角线将正N边形分成N-2个三角形。
现在要求读入N边形的N(N≤20),输出不同划分方法的总数(要求解的是划分方法数,而不需要输出各种划分法)。

这里,注意:
(1)顶点编号,认为顶点皆不相同,因此不允许认为将凸N边形转置视为相同划分。
(2)若输出是“No answer”,请注意大小写和无标点。

输入输出举例:
输入: N=3, 输出:1
输入: N=5, 输出:5
输入: N=2, 输出:No answer
输入: N=6, 输出:14
输入: N=8, 输出:132

例如:
当N=5时,共有5种分法。

当N=6时,对六边形的三角形所有划分,请看下图:

输入格式
N,代表正凸N边形。

输出格式
不同划分方法的总数。

输入样例
5

输出样例
5

提示

题目所求的是分法总数,并不要求具体的分法。而且,N可以大到21。
因此,用简单搜索或枚举会耗时较多,而应该想方设法找出N为不同值时,分法总数的变化规律。

把一个正凸N边形的各个顶点按照顺时针分别编上1,2,……,N。
顶点1,顶点N和顶点I(I∈[2, N-1])能够构成一个三角形S。
这样凸N边形就被分成三部分:一个三角形S、一个I边形和一个N+1-I边形(I, N+1-I∈[2, N-1])。
因此,凸N边形分为三角形总数Total(N)等于I边形的分法总数乘以N+1-I边形的分法总数之积,还要
在I分别取2,3,……,N-1时都累加起来。

递推公式如下:
Total(N) = sum{ Total(I)*Total(N+1-I) | for I=2 to N-1} if N>=4
Total(2) = Total(3) = 1

注意: 2点的多边形视为蜕化的多边形,定义其Total(2)=1,是为递推公式推导用。
但按题目意思当N=2时输出无解。

另外,此题需要注意的是,如果你写的纯递归程序可能会超时的,因为这里递归存在重复,且重复数量庞大。
需要用数组将你算过的元素存储下来,避免重复的递归计算,这样优化后,才能通过。

代码

#include <iostream>
#define N 30int p[N];using namespace std;void coutQ(int n){for(int i=0;i<n;i++)p[i]=0;p[2]=1,p[3]=1;//双重循环 记录数据q[i]for(int i=4;i<=n;i++){for(int k=2;k<n;k++){p[i]+=p[k]*p[i-k+1];}}
}int main(){int n;scanf("%d",&n);coutQ(n);if(n==1||n==2)printf("No answer");else printf("%d",p[n]);return 0;
}

10343 划分凸多边形(优先做)相关推荐

  1. 17103 基站建设(优先做)

    17103 基站建设(优先做) 题目 代码 题目 Description 一条很长的乡村公路(我们可以想象这条公路是一条长线段,有一个西端点和一个东端点),公路旁稀疏的分布着一些房子. 我们把公路的西 ...

  2. 17965 幸运之星(优先做)

    时间限制:100MS  代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题   语言: G++;GCC;VC;JAVA Description 每年新年派对的最后一个节目就是选出下年的 ...

  3. 做一个快乐的产品经理

    临时应景,应草根帮主之邀,让我讲一下产品方面的东东,接到这个任务都有点发愁,其实产品也没啥好讲的,于是匆匆码了下面的一些文字,结果PPT没准备好,最后寥寥几句囫囵收场.O(∩_∩)O哈哈~ 前言: 产 ...

  4. 吴恩达神经网络和深度学习-学习笔记-24-在不同的划分上进行训练和测试+不匹配数据划分的偏差和方差

    在不同的划分上进行训练和测试 深度学习算法对训练数据的胃口很大,当你收集到足够多的带标签数据构成训练集时,算法效果最好. 这导致很多团队用尽一切方法收集数据,然后把它们堆到训练集里,让训练的数据量更大 ...

  5. 做产品与做项目的区别

    1  背景概述 在软件行业飞速发展的今天,我们可以将软件公司分大体分为两类,一类是使用框架进行开发的软件公司,另一类是套装软件产品的提供商,前者公司多数定位是项目类公司,后者则可以称为产品类公司.但做 ...

  6. 生物多样性 分类器多样性_优先考虑多样性是谁的工作

    生物多样性 分类器多样性 Did you know that, according to the Fitzpatrick scale, there are six skin types by whic ...

  7. CCNA1:网路基础、TCP/IP、OSI、IPv4、子网划分、数据封装

    文章目录 CCNA1:网络基础.TCP/IP.OSI.IPv4.子网划分.数据封装 一.TCP/IP协议栈.OSI七层参考模型: 1.OSI七层参考模型: 2.TCP/IP四层参考模型: 3.比较: ...

  8. VLAN划分及配置注意事项

    VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术.VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从而将广 ...

  9. 大促当前,如何做一场美丽联合的架构融合

    2016年6月,美丽说.蘑菇街.淘世界合并数月后正式宣布新集团为美丽联合集团,各技术团队在技术栈.多机房架构.中间件.电商底层系统模型等方面差异巨大,然而美丽联合集团在短短数月内完成了融合统一,相信不 ...

最新文章

  1. python学习day24 继承 派生
  2. MPB:沈阳生态所李琪组-​土壤线虫群落DNA提取、扩增及高通量测序
  3. werkzeug中服务器处理请求的实现
  4. netty3超长字符串
  5. 独家干货 | 林轩田机器学习课程精炼笔记!
  6. boost::sub_range相关的测试程序
  7. git pull冲突解决
  8. Stream流中的常用方法_filter
  9. linux屏幕怎么放大_02|初始Linux——Windows与Linux区别
  10. eos-unittest
  11. VC ado连接数据库
  12. java怎么播放视频_java 播放视频
  13. 小程序typescript_16天:从概念到实现的TypeScript应用程序
  14. 汉字 计算机 坟墓,墓的拼音_墓组词_墓意思(解释)-常用汉字大全
  15. ARM S5PV210 X210 刷机教程总结
  16. 五分钟you-get入门
  17. 00后专访:我是如何初中毕业年仅16岁便踏入北漂码农行业的(一)
  18. 从小社会认同到大社会认同:引爆流行的转折点
  19. 天津大学计算机2017年录取分数线,2017年天津大学美术专业录取分数线
  20. 德国慕尼黑工业大学计算机学院,德国哪些大学有英文授课?慕尼黑工业大学有吗?...

热门文章

  1. 一个sql server2005分页的存储过程
  2. 基于SSM美食食谱管理系统Java家庭食谱安排系统的设计与实现(源码调试+讲解+文档)
  3. 增量备份、差异备份、增量备份的区别?
  4. python的IDLE打不开如何解决
  5. JQuery - 反向选择器
  6. 力扣第378题 有序矩阵中第K小的元素
  7. matlab牛顿环gif,牛顿环干涉实验的 Matlab模拟
  8. 请根据微信登录界面设计测试用例
  9. C语言之数组按协议存储与按协议解析
  10. sql server 通过参数获取两位数月份