ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

杭电oj HDOJ 2050 折线分割平面(递推)算法 数学逻辑(由分割平面转化而来)

2021-03-13 20:33:54  阅读:218  来源: 互联网

标签:2050 分割 room int 线段 折线 平面


题目:
我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。

Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0<n<=10000),表示折线的数量。

Output
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。

Sample Input
2
1
2

Sample Output
2
7

分析:
先思考一个问题:如果用直线将圆进行分割,三条直线不能共用一个交点,最多可以把圆分为几块?
解释:可以简单得出,增加一条线段,如果有两个新的交点,意味着产生可三个新线段,等价于产生三个新区间,同理,由上图可知,第二条折线产生了四个交点,同时产生了四个新线段,意味着产生了五个新区间;

递推公式:F(n)=F(n-1)+4*(n-1)+1;
代码:

#include<stdio.h>
int main()
{
	int i,n,m;
	int room[1000];
	room[0]=1;
	room[1]=2;
	for(i=2;i<1000;i++)//将规律直接装到数组中,之后直接读取数组中的元素即可
	{
		room[i]=room[i-1]+4*(i-1)+1;
	}
	scanf("%d",&n);//测试组数
	while(n--)
	{
		scanf("%d",&m);//折线数目
		printf("%d\n",room[m]);
	}
	return 0;
}

输出结果:

数学逻辑运用较多,类似于找规律。

标签:2050,分割,room,int,线段,折线,平面
来源: https://blog.csdn.net/qq_52077949/article/details/114760405

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有