• 圆里有几个矩形——http://www.zybbs.org/JudgeOnline/problem.php?id=1800


    escription

    给出圆周上的若干个点,已知点与点之间的弧长,其值均为正整数,并依圆周顺序排列。 请找出这些点中有没有可以围成矩形的,并希望在最短时间内找出所有不重复矩形。

    Input

    第一行为正整数N,表示点的个数,接下来N行分别为这N个点所分割的各个圆弧长度

    Output

    所构成不重复矩形的个数
     
    思路:
    由于是一个圆,所以要用到类似循环的数组,将原来的数组增加n-1
    如n=4延长到
    1 2 3 4 1 2 3
    即可达到循环效果
    枚举即可
    View Code
    #include<stdio.h>

    int a[99];

    int main()
    {
    int n,i,j;
    while(scanf("%d",&n)!=EOF)
    {
    int all=0,shu=0;
    for(i=1;i<=n;i++)
    {
    scanf("%d",&a[i]);
    all+=a[i];
    }



    for(i=1;i<n;i++)
    {
    a[n+i]=a[i];
    }

    int n3=2*n-3,k,x;
    for(i=2;i<=n3;i++)
    {
    for(j=0;j<=n-4;j++)
    {
    int temp=0;
    for(k=i;k<=i+j;k++){
    temp+=a[k];
    }

    if(2*temp>=all) continue;

    int ll=0;
    for(k=1; (i-k)>=1;k++)//ll左边的
    {
    ll+=a[i-k];
    if(2*ll>(all-2*temp))break;

    if(2*ll!=(all-2*temp))continue;

    int rr=0;//右边
    for(x=1;(i+j+x)<n;x++)
    {
    rr+=a[i+j+x];
    if(rr>ll)break;
    if(rr==ll)
    {
    shu++;
    }
    }
    }
    }
    }

    printf("%d\n",shu);
    }
    }
  • 相关阅读:
    移动端轮播图
    移动端的注册页面
    点击显示或者消失的效果(手风琴效果)
    canvas的一些简单绘制方法
    用canvas来手动绘画
    canvas标签的运用
    Html5新标签解释及用法
    最近的心得
    浅谈正则表达式
    P3197 [HNOI2008]越狱
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2230824.html
Copyright © 2020-2023  润新知