10343 划分凸多边形(优先做)
题目描述
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 划分凸多边形(优先做)相关推荐
- 17103 基站建设(优先做)
17103 基站建设(优先做) 题目 代码 题目 Description 一条很长的乡村公路(我们可以想象这条公路是一条长线段,有一个西端点和一个东端点),公路旁稀疏的分布着一些房子. 我们把公路的西 ...
- 17965 幸运之星(优先做)
时间限制:100MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC;VC;JAVA Description 每年新年派对的最后一个节目就是选出下年的 ...
- 做一个快乐的产品经理
临时应景,应草根帮主之邀,让我讲一下产品方面的东东,接到这个任务都有点发愁,其实产品也没啥好讲的,于是匆匆码了下面的一些文字,结果PPT没准备好,最后寥寥几句囫囵收场.O(∩_∩)O哈哈~ 前言: 产 ...
- 吴恩达神经网络和深度学习-学习笔记-24-在不同的划分上进行训练和测试+不匹配数据划分的偏差和方差
在不同的划分上进行训练和测试 深度学习算法对训练数据的胃口很大,当你收集到足够多的带标签数据构成训练集时,算法效果最好. 这导致很多团队用尽一切方法收集数据,然后把它们堆到训练集里,让训练的数据量更大 ...
- 做产品与做项目的区别
1 背景概述 在软件行业飞速发展的今天,我们可以将软件公司分大体分为两类,一类是使用框架进行开发的软件公司,另一类是套装软件产品的提供商,前者公司多数定位是项目类公司,后者则可以称为产品类公司.但做 ...
- 生物多样性 分类器多样性_优先考虑多样性是谁的工作
生物多样性 分类器多样性 Did you know that, according to the Fitzpatrick scale, there are six skin types by whic ...
- CCNA1:网路基础、TCP/IP、OSI、IPv4、子网划分、数据封装
文章目录 CCNA1:网络基础.TCP/IP.OSI.IPv4.子网划分.数据封装 一.TCP/IP协议栈.OSI七层参考模型: 1.OSI七层参考模型: 2.TCP/IP四层参考模型: 3.比较: ...
- VLAN划分及配置注意事项
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术.VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从而将广 ...
- 大促当前,如何做一场美丽联合的架构融合
2016年6月,美丽说.蘑菇街.淘世界合并数月后正式宣布新集团为美丽联合集团,各技术团队在技术栈.多机房架构.中间件.电商底层系统模型等方面差异巨大,然而美丽联合集团在短短数月内完成了融合统一,相信不 ...
最新文章
- python学习day24 继承 派生
- MPB:沈阳生态所李琪组-​土壤线虫群落DNA提取、扩增及高通量测序
- werkzeug中服务器处理请求的实现
- netty3超长字符串
- 独家干货 | 林轩田机器学习课程精炼笔记!
- boost::sub_range相关的测试程序
- git pull冲突解决
- Stream流中的常用方法_filter
- linux屏幕怎么放大_02|初始Linux——Windows与Linux区别
- eos-unittest
- VC ado连接数据库
- java怎么播放视频_java 播放视频
- 小程序typescript_16天:从概念到实现的TypeScript应用程序
- 汉字 计算机 坟墓,墓的拼音_墓组词_墓意思(解释)-常用汉字大全
- ARM S5PV210 X210 刷机教程总结
- 五分钟you-get入门
- 00后专访:我是如何初中毕业年仅16岁便踏入北漂码农行业的(一)
- 从小社会认同到大社会认同:引爆流行的转折点
- 天津大学计算机2017年录取分数线,2017年天津大学美术专业录取分数线
- 德国慕尼黑工业大学计算机学院,德国哪些大学有英文授课?慕尼黑工业大学有吗?...