首页 > 其他分享 >解决求图形面积问题

解决求图形面积问题

时间:2024-02-22 16:22:22浏览次数:27  
标签:cnt int 面积 namespace 解决 图形 now DP

1.闭合不规则的图形面积(简单)

使用bfs算法遍历外围端点并标记,最后找没被标记的个数即是面积。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
struct site
{
	int x,y;
}s,now,det;
queue<site>q;
int a[12][12],num=0;
bool first;
int detx[10]={-1,1,0,0};
int dety[10]={0,0,-1,1};
//上(-1,0)
//下(+1,0)
//左(0,-1)
//右(0,+1) 
void input()
{
	for(int i=1;i<=10;i++)
	{
		for(int j=1;j<=10;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
}
void solve()
{
	now.x=0;
	now.y=0;
	q.push(now);
	a[now.x][now.y]=1;
	while(!q.empty())
	{
		det=q.front();
		q.pop();
		for(int i=0;i<4;i++)
		{
			now.x=det.x+detx[i];
			now.y=det.y+dety[i];
			if(now.x>=0&&now.x<=11&&now.y>=0&&now.y<=11)
			{
				if(a[now.x][now.y]==0)
				{
					q.push(now);
					a[now.x][now.y]=1;
				}
			}
		} 
	}
	
	for(int i=1;i<=10;i++)
	{
		for(int j=1;j<=10;j++)
		{
			if(a[i][j]==0)
			{
				num++;
			}
		}
		cout<<endl;
	}
	printf("%d",num);
	exit(0);
}


int main()
{
	input();
	solve();
}

2.规则特殊图形

比如正三角形,正方形
像规则的图形一般可以使用DP的用法

具体解析可见我的坐标DP

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=3000; 
int n,ans,cnt; 
char g[N][N];
int f[N][N],c[N][N];
int main()
{
    cin>>n;
	for(int i=1;i<=N-1;i++)
	{
		for(int j=1;j<=N-1;j++)
		{
			g[i][j]='1';
		}
	 } 
	 
    for(int i=1;i<=n;i++)
    {
    	for(int j=i;j<=(n-i)*2+i;j++)
    	{
    		
			cin>>g[i][j];
			if(g[i][j]=='1')
			{
				cnt++;
			}
		}
	}
	if(cnt==n*(n*2)/2)
	{
		cout<<0;
		exit(0);
	}
	for(int i=1;i<=n;i++)
    {
    	for(int j=i;j<=(n-i)*2+i;j++)
    	{
				if(g[i][j]=='0'&&g[i-1][j-1]=='0'&&g[i-1][j]=='0'&&g[i-1][j+1]=='0')
				{
//					cout<<i<<" "<<j; 
					int num=0x3f3f3f3f;
					num=min(f[i-1][j-1],num);
					num=min(f[i-1][j],num);
					num=min(f[i-1][j+1],num);
					f[i][j]=max(f[i][j],num+1);
				}		
		}
	}
	for(int i=n;i>=1;i--)
    {
    	for(int j=i;j<=(n-i)*2+i;j++)
    	{
				if(g[i][j]=='0'&&g[i+1][j-1]=='0'&&g[i+1][j]=='0'&&g[i+1][j+1]=='0')
				{
					int num=0x3f3f3f3f;
					num=min(c[i+1][j-1],num);
					num=min(c[i+1][j],num);
					num=min(c[i+1][j+1],num);
					c[i][j]=max(c[i][j],num+1);
				}		
		}
	}
	for(int i=1;i<=n;i++)
    {
    	for(int j=i;j<=(n-i)*2+i;j++)
    	{
    		if((j-i+1)&1)
    		{
//    			cout<<i<<" "<<j<<" ";
    			ans=max(ans,f[i][j]);
			}
			if((j-i+1)%2==0)
			{
				ans=max(ans,c[i][j]);
			}
		}
//		cout<<endl;
	}
//	cout<<ans<<" ";
	int s=(ans+1)*(1+(ans+1)*2-1)/2;
	cout<<s;
}

3.规则的矩形

同样可使用DP的用法,这里推荐悬线法DP

详细可见传送门

标签:cnt,int,面积,namespace,解决,图形,now,DP
From: https://www.cnblogs.com/zhengchenxi/p/18027562

相关文章

  • 深度解析:iOS开发中Masonry第三方库可能出现的布局崩溃问题及解决方案
    在iOS应用开发过程中,自动布局是一个至关重要的环节。作为广受欢迎的第三方布局框架,Masonry以其简洁的链式语法和强大的功能为开发者提供了便利。然而,在实际使用过程中,如果不正确地配置约束,可能会导致界面布局崩溃的问题。本文将通过具体代码示例探讨几种常见的Masonry布局崩溃原因......
  • 使用注解@Async实现异步执行未生效的解决办法
    使用注解@Async实现异步执行未生效的解决办法1、第一种:未在启动类上标注开启异步执行的注解 启动类 @SpringBootApplication@EnableScheduling@EnableAsync@EnableRedisHttpSession(maxInactiveIntervalInSeconds=3600*4)@MapperScan("com.*")publicclassApplicati......
  • 智能诊断设备迅为IMX6Q核心板解决方案
    在科技飞速发展的今天,智能诊断设备已经成为了医疗领域不可或缺的一部分。其中,这款IMX6Q核心板在智能诊断设备中也有广泛的使用。  IMX6Q核心板作为一款高性能的处理器,具有强大的数据处理能力和高效的能源管理功能。在智能诊断设备中,它可以快速处理大量的医疗数据,为医生提供准......
  • Google Earth Pro谷歌地球专业版,标准版,在国内可以用,解决黑屏问题街景
    --------------------------------win电脑下载地址点这里☜---------------------------------------------------------------mac电脑下载地址点这里☜--------------------------------====================-----------------------------有百度网盘会员的可以点这里☜------......
  • 跨域 解决办法:利用 Access-Control-Allow-Origin
    ASP.NET中WebAPI解决跨域问题https://www.jb51.net/article/240038.htm 传统的跨域请求没有好的解决方案,无非就是jsonp和iframe,随着跨域请求的应用越来越多,W3C提供了跨域请求的标准方案(Cross-OriginResourceSharing)。IE8、Firefox3.5及其以后的版本、Chrome浏览器、Saf......
  • 为免费Hyper-V Server 2019打造本地图形管理界面
    Hyper-VServer是微软发布的免费虚拟化引擎,支持文本界面。本文通过在Hyper-VServer上本地安装chrome和windowsadmincenter,实现Hyper-VServer的本地图形管理界面。1、介绍Hyper-V是Microsoft的硬件虚拟化产品。它用于创建并运行计算机的软件版本,称为“虚拟机”。每......
  • AutoCAD2024画圆或矩形实时预览消失了如何解决?
    最近有小伙伴问这个问题,他在使用AutoCAD绘制图形时,发现画圆或矩形实时预览没有了,如下,画图不容易定位,非常影响画图效率,十分苦恼不知道如何恢复? 正常CAD画圆(或矩形)会显示实时预览,如下:操作步骤:AutoCAD20241、打开AutoCAD2024软件,然后在命令栏输入:DRAGMODE,然后按Enter键......
  • 软件无线电处理平台设计方案:330-基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口
    一、板卡概述     本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900 ,支持PCIeX8、64bit DDR3容量2GByte,HPC的FMC连接器,板卡支持PXIE标准协议,其中XJ3标准高速差分接口,支持PCIeX 2。软件具有windows,Linux驱动。二、功能和技术......
  • RabbitMq的实践中解决过消息丢失、消息幂等性、消息顺序消费、消息延迟消费等问题;
    1、RabbitMq如何实现消息延迟消费?1.1、延时插件答:延时插件rabbitmq_delayed_message_exchange,下载好之后放到对应plugins目录下,然后启用插件声明交换器类型为x-delayed-message来标示此交换机为延时交换机,发送消息时在header中添加x-delay参数来控制消息的延时时间......
  • TDengine数据库图形用户界面工具
    tsdb-gui说明由于最近工作中一直用到TDengine,使用过程中发现没有一款较好的图形界面工具,类似Navicat之类的,每次进入控制台进行管理,非常不方便,于是萌生了自己开发一款GUI的想法,目前1.0.0版本已经开发完毕,能满足基本操作,后续有时间继续优化。工具介绍免费开源的时序数据库图形用......