CG


私信TA

用户名:dotcpp0796391

访问量:30

签 名:

等  级
排  名 29492
经  验 518
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:
因为是矩形,所以只要得到长和宽的数据,就可以求得其内的面积,同时无需关注每一位数字在图形中的位置,只要得到在1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1这个顺序中位于的几位即可。先求得长度然后通过1的总数量,获得宽度的数值。即width=((sum+4)-length*2)/2

注意事项:数据量比较大,使用数组不太好整,容易超限;
参考代码:

#include <stdio.h>

#include <malloc.h>

//肿瘤是矩形区域,如此就简单许多

int input(int *m,int n);

void printout(int ch,int ku);

int main(){

    int n;

    int sum=0,length,width;

    int m[1]={0};

    scanf("%d",&n);

    sum=input(m,n);

    length=m[0];

    width=(sum+4-length*2)/2;

    printout(length,width);

}

//对数据进行获取,同时计算1的总数sum,以及length;

int input(int *m,int n)

{

    int a=0;

    int sum=0;

    int hang=0;

    for(int i=0;i<n*n;i++)

    {

        scanf("%d",&a);

        if(a==0)

        {

            //获取第一次出现1的行数,以此统计第一次出现1的长的数值

            if(sum==0)

            {

                hang=(i/n)+1;

            }

            if((i/n)+1==hang)

            {

                m[0]++;

            }

            sum++;

        }

    }

    return sum;

}

//求矩形区域内面积

void printout(int length,int width)

{

    if(length<3||width<3)

    printf("0");

    else printf("%d",((length-2)*(width-2)));

}


 

0.0分

0 人评分

  评论区

  • «
  • »