XYNUOJ 平面分割问题

问题 F: 平面分割问题

时间限制: 1 Sec   内存限制: 128 MB
提交: 9   解决: 9
[ 提交][ 状态][ 讨论版]

题目描述

设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好相交于两点,且任何三条封闭曲线不相交于同一点,问这些封闭曲线把平面分割成的区域个数。


输入

对每一笔测试数据,输入只有一行:整数n (0<n<1000)

输出

一行:一个整数

样例输入

1
3
10
30
500

样例输出

2
8
92
872
249502

提示

多组测试数据


题目智能推荐

因为任意两条曲线都相交于两点,所以每加一条曲线就会多n(不明)个区域,至于多几个区域,观察发现,每一个递推公式a[n]-a[n-1]等于2*(n-1),所以试着写出程序竟然A了,又上网查了下具体的推理过程

如下:平面分割问题 - CSDN博客
http://blog.csdn.net/sinat_34943123/article/details/51440883

问题的提出:设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好相交于两点,且任何三条封闭曲线不相交于同一点,问这些封闭曲线把平面分割成的区域个数。

解:设an为n条封闭曲线把平面分割成的区域个数。 由图3-13可以看出:a2-a1=2;a3-a2=4;a4-a3=6。 
这里写图片描述 
从这些式子中可以看出an-an-1=2(n-1)。当然,上面的式子只是我们通过观察4幅图后得出的结论,它的正确性尚不能保证。下面不妨让我们来试着证明一下。当平面上已有n-1条曲线将平面分割成an-1个区域后,第n-1条曲线每与曲线相交一次,就会增加一个区域,因为平面上已有了n-1条封闭曲线,且第n条曲线与已有的每一条闭曲线恰好相交于两点,且不会与任两条曲线交于同一点,故平面上一共增加2(n-1)个区域,加上已有的an-1个区域,一共有an-1+2(n-1)个区域。所以本题的递推关系是an=an-1+2(n-1),边界条件是a1=1。 
平面分割问题是竞赛中经常触及到的一类问题,由于其灵活多变,常常感到棘手,下面的例8是另一种平面分割问题,有兴趣的读者不妨自己先试着求一下其中的递推关系。

#include<stdio.h>
int main()
{
	int n;
	long long a[1100];
	a[1]=2;a[2]=4;
	for(int i=3;i<=1100;i++)
	a[i]=a[i-1]+2*(i-1);
	while(scanf("%d",&n)!=EOF)
	{
		printf("%d\n",a[n]);
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值