平面问题:平面分割 平面切分

目录

前言

1.平面分割

2.平面切分

一、解题

1.平面分割

2.平面切分

二、总结


前言

对于平面问题,最重要的就是 找对规律!!

上题目

1.平面分割

平面问题:平面分割 平面切分_第1张图片

 原题链接

2.平面切分

平面问题:平面分割 平面切分_第2张图片

平面问题:平面分割 平面切分_第3张图片


平面切分原题链接。

一、解题

1.平面分割

规律分析:

每多1个交点,平面数+1

先放直线,每条直线对平面的基础贡献数是1,也就是没有交点,只增加一个平面

每条直线 最多与之前的每条直线有1个交点,

所以, 已经有i-1条直线增加第i条直线时,最多增加i个平面;(1+i-1=i)

再放圆,每个圆最多与之前的每个圆有2个交点,并与20条直线有20*2个交点

最后把交点数相加即可

#include 
using namespace std;
int main()
{
  // 请在此输入您的代码
  int i,sum=0;
  for(i=3,sum=4;i<=20;i++)sum+=i;//先放直线
  for(i=1;i<=20;i++){//再放圆
    sum+=(20*2);//每一个圆和20条直线的最多交点数
    sum+=((i-1)*2);//每一个圆和2前面圆的最多交点数
  }
  cout<

2.平面切分

其实规律与上面的题类似,只是现在算的不是最多的情况

要考虑重合的情况

每条直线对平面的贡献数最低是1,也就是平行,没有交点,只多了一个平面。

若有交点,再加上本条直线与前(i-1)条直线不重复的交点数

举个例子

平面问题:平面分割 平面切分_第4张图片

 所以,一定一定要记得直线去重,不然算出的答案会多,呜呜

#include 
using namespace std;
int main()
{
  // 请在此输入您的代码
int n,i,j,cnt=1,count=0,p;
double x2[1009],y2[1009];
cin>>n;
int k[n],b[n];
for(i=0;i>k[i]>>b[i];
 //for(j=0;j

二、总结

题的难度不大,重要的是规律!!规律!!

你可能感兴趣的:(蓝桥杯,c++)