zoukankan      html  css  js  c++  java
  • 多少块土地

    你有一块椭圆的土地,你可以在边界上选n个点,并两两链接得到n*(n-1)/2条线段。它们最多能把土地分为多少个部分?

    样例输入:4

    样例输出:8

    分析:欧拉公式:V-E+F=2。V是顶点数,F是面数(即土地块数加上最外面那个面),E是边数。只要求出V,E,答案就是E-V+1。不管是顶点还是边,计算时都要枚举一条从固定点出发(所以,最后要乘以n)的所有对角线。假设该对角线的左边有i个点,右边有n-2-i个点,则左右两边的点两两搭配后在对角线上形成了i*(n-2-i)个交点,得到了i*(n-2-i)+1个线段。注意,每个交点被重复计算了4次,每个线段被重复计算了2次。因为一个交点有两个线段相交而成,共有4个端点。

    代码:

    #include<stdio.h>
    int main()
    {
        int n;
    while(scanf("%d",&n)==1)
    {  int e,v,f=0,s=0,p,q=0,t;
         for(int i=0;i<=n-2;i++)
        {
             t=i*(n-2-i);
             s+=t;
             p=(i*(n-2-i)+1);
             q+=p;
        }
         v=n+(n*s)/4;
         e=n+(n*q)/2;
        f=e-v+1;
        printf("%d ",f);
    }

        return 0;
    }

  • 相关阅读:
    html的一些基本属性介绍
    html的一些基本语法学习与实战
    getline()和get()的使用区别
    浅谈JS执行环境及作用域
    vue的第一个commit分析
    移动端适配-rem(新)
    电商类业务梳理
    不同类型的状态码及含义
    TCP/IP简记
    前端性能优化小结(持续更新)
  • 原文地址:https://www.cnblogs.com/lyf123456/p/3219183.html
Copyright © 2011-2022 走看看