10343 划分凸多边形
时间限制:1000MS 内存限制:65535K 提交次数:0 通过次数:0
题型: 编程题语言: 无限制
描述
问题描述:一个正凸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时,对六边形的三角形所有划分,请看下图:
输入格式
7
N,代表正凸N边形。
输出格式
不同划分方法的总数。
输入样例
5
输出样例
5
8
------------------------------------------
10343划分凸多边形(递归、分治)
(非递归)
#include<stdio.h>
#include<malloc.h>
intmain()
{
intn,i,j;
int*p;
{
scanf("%d",&n);}while(n>20);
if(n<3)
{
printf("Noanswer");return0;}
else
{
p=(int*)malloc((n+1)*sizeof(int));
p[1]=1;
for(i=2;i<=n;i++)
{p[i]=0;
for(j=1;j<i;j++)
p[i]+=p[j]*p[i-j];
}
printf("%d\n",p[n-1]);
return0;}
}
(递归)
#include<stdio.h>
intP(intn)
{
intsum=0,temp=0,k;
if(n==1)return1;
elseif(n>1)
{
for(k=1;k<n;k++)
{
temp=P(k)*P(n-k);
sum+=temp;
}
returnsum;
}
elsereturn0;
}
intmain()
{
intn;
{scanf("%d",&n);}while(n>20);
if(n<3)
{
printf("Noanswer");return0;}
else{printf("%d",P(n-1));
return0;}
}
分享到:
相关推荐
一个正凸N边形,可以用N-3条互不相交的对角线将正N边形分成N-2个三角形。 现在要求读入N边形的N(N≤20),输出不同划分方法的总数(要求解的是划分方法数,而不需要输出各种划分法)。
均衡划分凸多边形的代码,pku2839 可以在对数时间内解决三角型与多边形相交的面积。
"凸多边形三角划分"是一个在计算机图形学领域中常见的问题,特别是在三维建模、游戏开发和物理模拟等场景中。这个问题的目标是将一个凸多边形分割成多个不相交的三角形,这些三角形能够无间隙地覆盖整个多边形。这种...
凸多边形的三角划分是动态规划的一个实例。 ps:输入数据还需要自己另外写过,因为我的代码里面是固定了数据的。代码不多,修改起来还是挺简单的。
在计算机图形学领域,凸多边形的最优三角划分是一个重要的问题。这个任务涉及到将一个凸多边形分割成多个不相交的三角形,同时优化某种特定的度量标准,比如最小化最大三角形面积或者减少边数。在本项目中,我们将...
标题“polygonPartition:在目标 C 中将凹多边形划分为凸多边形”暗示了这是一个用C++实现的程序,其主要任务是处理凹多边形的分割问题。 首先,我们来理解一下凹多边形和凸多边形的概念。凸多边形是所有顶点都在同...
实现了求凸多边形中三角划分弦长之和最短的问题。其间可以进一步改进。
将这个凸多边形划分成 N−2个互不相交的三角形,对于每个三角形,其三个顶点的权值相乘都可得到一个权值乘积,试求所有三角形的顶点权值乘积之和至少为多少。 输入格式 第一行包含整数 N,表示顶点数量。 第二行包...
总的来说,通过Delaunay三角剖分对凸多边形进行网格划分是一种高效且广泛应用的方法,它可以生成高质量的三角形网格,为后续的图形处理和计算提供良好的基础。在实际应用中,这种技术常用于游戏开发、CAD设计、地理...
在这个Java实现中,开发者可能已经考虑了各种情况,包括处理自相交的多边形、非凸多边形以及确保填充不溢出边界。代码可能包含数据结构(如栈或队列)来存储边界的交点,并使用条件逻辑来判断像素是否应该被填充。 ...
为划分凸多边形引入了新算法,以实现有效的覆盖路径规划。 这些算法在模拟和现场使用为该任务建造的小型双体差推力船进行了测试。在本文中,我们开发并实现了一套算法,用于自主查找和跟踪测深轮廓和边界多边形的...
点数据外包凸多边形三角化是一种在计算机图形学和地理信息系统中常见的几何处理技术,主要目的是将一组无序的二维点集转化为一系列互不相交的三角形,形成一个覆盖这些点的连通区域。这个过程也被称为Delaunay三角...
凸分解是在O(n * r)时间内完成的,其中n是多边形顶点的数量,r是反射多边形顶点的数量。 安装 要安装此库,只需将ConcavePolygon.h复制到您的项目中并#include“ ConcavePolygon.h”。 用法 示例:创建凹面多边形...
如果所有角度都小于180度,则该多边形为凸多边形;如果有至少一个角度大于180度,那么它是凹的。在C#中,可以通过遍历顶点列表并计算相邻边的角度来实现这个判断。 5. **向量数学**:判断多边形凹凸性通常需要用到...
凹多边形和凸多边形是根据它们的几何形状来区分的。凸多边形的任意两个点之间的连线都在多边形内部。如果存在某条线段穿过多边形内部,则该多边形为凹多边形。检测方法包括扫描线法、凸包算法(如 Graham's Scan 或...
对于一个不规则多边形,可以将其划分为多个三角形,因为三角形的面积计算相对简单,即底乘高除以2。这个小工具就是基于这个思路,将多边形分割为若干个三角形,然后对每个三角形进行面积计算,最后将所有三角形的...
基于给定的平面散点数据,提出了逐层提取轮廓线,并将轮廓线之间的区域进行三角划分的新算法。实现这一算法的关键是在给定阈值的条件下逐层提取内部离散点的轮廓线,再在所提取的轮廓线间进行等比例三角划分。最后,...
Ear Clipping 算法首先找到多边形的“耳朵”,即相邻三边构成一个凸角的顶点,然后剪掉这个“耳朵”形成两个新的三角形,重复此过程直到所有顶点都被剪掉。而Bowyer-Watson法则适用于有洞的多边形,它从任意点开始,...
**4.3 划分凸多边形** - 本题涉及计算几何中的凸包问题,需要掌握相关理论和算法。 **4.4 防卫导弹** - 涉及到模拟和优化问题,考验参赛者的逻辑思维能力和算法设计能力。 **4.5 邮票问题** - 一个经典的组合数学...