C++二维数组(2)

图形相似度

题目描述: 给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度。 说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点。 两幅图像的相似度定义为相同像素点数占总像素点数的百分比。 输入 第一行包含两个整数m和n,表示图像的行数和列数,中间用单个空格隔开。 1 <= m <= 100, 1 <= n <= 100。 之后m行,每行n个整数0或1,表示第一幅黑白图像上各像素点的颜色。相邻两个数之 间用单个空格隔开。 之后m行,每行n个整数0或1,表示第二幅黑白图像上各像素点的颜色。相邻两个数之 间用单个空格隔开。 输出 一个实数,表示相似度(以百分比的形式给出),精确到小数点后两位。

输入复制

2 2

1 1

0 0

1 0

0 0

输出复制

75.00

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int a[110][110];
	int b[110][110];
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)//行号 
	{
		for(int j=0;j<m;j++)//列号 
		{
			cin>>a[i][j];
	    }
	}//第一幅图 
	for(int i=0;i<n;i++)//行号 
	{
		for(int j=0;j<m;j++)//列号 
		{
			cin>>b[i][j];
	    }
	}//第二幅图 
	int cnt=0;
	for(int i=0;i<n;i++)//行号 
	{
		for(int j=0;j<m;j++)//列号 
		{
			if(a[i][j]==b[i][j])
			{
				cnt++;
			}
	    }
	}
	cout<<fixed<<setprecision(2)<<1.0*(100*cnt)/(n*m);
	
	
	return 0;
}

矩阵边缘之和 题目描述: 输入一个整数矩阵,计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素,就是 第一行和最后一行的元素以及第一列和最后一列的元素。 输入 第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格 分开。 接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。 输出 输出对应矩阵的边缘元素和

输入复制

3 3

1 2 3

4 5 6

7 8 9

输出复制

40

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int a[110][110]={0};
	int n,m;
	cin>>n>>m;
	int k=1;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			a[i][j]=k;
			k++;
		}
	}
	for(int i=n-1;i>=0;i--)
	{
		for(int j=0;j<m;j++)
		{
			cout<<setw(3)/*不管这个数多大,都按照3位后对齐*/<<a[i][j];
		}
		cout<<endl;
	}
	
	
	return 0;
}

最好的草

描述 奶牛Bessie计划好好享受柔软的春季新草。新草分布在R行C列的牧场里。 它想计算一下牧场中的草丛数量。 在牧场地图中,每个草丛要么是单个“#”,要么是有公共边的相邻两个“#”。 给定牧场地图,计算有多少个草丛。 例如,考虑如下5行6列的牧场地图

. # . . .

. . . # .

. . . . #

. . # . .

. # # . .

# . . . .

这个牧场有5个草丛:一个在第一行,一个在第二列横跨了二、三行, 一个在第三行,一个在第四行横跨了四、五列,最后一个在第五行。 输入 第一行包含两个整数R和C,中间用单个空格隔开。 接下来R行,每行C个字符,描述牧场地图。字符只有“#”或“.”两种。(1 <= R, C <= 100 ) 输出 输出一个整数,表示草丛数。 

输入复制

3 3

# # .

.  . #

# # .

输出复制

3

#include<iostream>
using namespace std;
int main()
{
	char a[110][110];//char是因为这次输入的是字符 
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>a[i][j];
		}
	}
	int cnt=0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(a[i][j]=='#')
			{
				cnt++;
				a[i-1][j]='.';//把这个#上面的#变成.使他不会重复计算 
				a[i+1][j]='.';//把这个#下面的#变成.使他不会重复计算 
				a[i][j-1]='.';//把这个#左边的#变成.使他不会重复计算 
				a[i][j+1]='.';//把这个#右边的#变成.使他不会重复计算 
			}//把和它一丛的草都计算成一丛 
		}
	}
	cout<<cnt; 
	
	
	return 0;
}

图像模糊处理

题目描述: 给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:

1. 四周最外侧的像素点灰度值不变;

2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

输入 第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。 接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之 间。 输出 n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。(注意:因为每一个数在模糊化的时候,都要提取周围数的值,所以我们需要两个二维数组,其中一个专门用来保存更改后的数据)

输入复制

4 5

100  0  100  0  50

50  100  200  0  0

50  50  100  100  200

100  100  50  50  100

输出复制

100 0 100 0 50

50 80 100 60 0

50 80 100 90 200

100 100 50 50 100

#include<iostream>
using namespace std;
int main()
{
	int a[110][110];
	int b[110][110];
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>a[i][j];
			b[i][j]=a[i][j];
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(i!=0&&i!=n-1&&j!=0&&j!=m-1)
			{
				int sum=0;
				sum=sum+a[i-1][j];
				sum=sum+a[i+1][j];
				sum=sum+a[i][j-1];
				sum=sum+a[i][j+1];
				sum=sum+a[i][j];
				b[i][j]=sum/5;
			}
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cout<<b[i][j]<<" ";
		}
		cout<<endl;
	}
	
	
	return 0;
}

扫雷

题目描述: 扫雷游戏是一款十分经典的单机小游戏。它的精髓在于,通过已翻开格子所提示的周围格地雷数,来判断未翻开格子里 是否是地雷。 现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格的周围格地雷数。 注:每个格子周围格有八个:上、下、左、右、左上、右上、左下、右下。 输入 第一行包含两个整数n和m,分别表示雷区的行数和列数。1 <= n <= 100, 1 <= m <= 100。 接下来n行,每行m个字符,‘*’表示相应格子中是地雷,‘?’表示相 应格子中无地雷。字符之间无任何分隔符。 输出 n行,每行m个字符,描述整个雷区。若相应格中是地雷,则用‘*’ 表示,否则用相应的周围格地雷数表示。字符之间无任何分隔符。

输入复制

*  ??

???

?*  ?

输出复制

*10

221

1*1

#include<iostream>
using namespace std;
int main()
{
	char a[110][110];
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(a[i][j]!='*')
			{
				int cnt=0;
				if(a[i-1][j]=='*')//判断上面是不是雷 
				{
					cnt++;
				}
				if(a[i+1][j]=='*')//判断下面是不是雷 
				{
					cnt++;
				}
				if(a[i][j-1]=='*')//判断左面是不是雷 
				{
					cnt++;
				}
				if(a[i][j+1]=='*')//判断右面是不是雷 
				{
					cnt++;
				}
				if(a[i-1][j-1]=='*')//判断左上面是不是雷 
				{
					cnt++;
				}
				if(a[i+1][j+1]=='*')//判断右下面是不是雷 
				{
					cnt++;
				}
				if(a[i-1][j+1]=='*')//判断右上面是不是雷 
				{
					cnt++;
				}
				if(a[i+1][j-1]=='*')//判断左下面是不是雷 
				{
					cnt++;
				}
				a[i][j]=cnt+48;
			}
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	
	
	return 0;
}

输出杨辉三角的前 N 行

题目描述: 输出杨辉三角的前 N 行(N<10) 。 输入 输入只有一行,包括 1个整数 N 。(N<10) 输出 输出只有 N 行 . 

杨辉三角:

输入复制

5

输出复制

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    int a[110][110]={0};
	int n;
	cin>>n;
	for(int i=5;i<n+5;i++)
	{
		for(int j=5;j<n+5;j++)
		{
			if(j==5||j==i)
			{
				a[i][j]=1;
			}
		}
	}	
	for(int i=7;i<n+5;i++)
	{
		for(int j=5;j<n+4;j++)
		{
			a[i][j]=a[i-1][j]+a[i-1][j-1];
		}
	}
	for(int i=5;i<n+5;i++)
	{
		for(int j=5;j<n+5;j++)
		{
			if(j<=i)
			{
				cout<<a[i][j]<<" ";
			}
		}
		cout<<endl;
	}
		
	
	return 0;
}

孤独的偶数

题目描述: 在一个 n 行 m 列的矩阵王国中,生活着一些整数,其中一些是偶数,一些不是偶数。如果一个偶数的 上下左右、左上、右上、左下、右下相邻的数中都没有素数,我们就认为这是一个孤独的偶数。 输入 第 1 行有 2 个整数 n 和 m ,代表矩阵的大(3≤n,m≤50)。 接下来 n 行,每行有 m 个整数(这些整数是 1∼1000 之间的整数,含 1 和 1000 ) 输出 输出 1 个整数,代表矩阵中孤独偶数的个数。

输入样例

3 5

3 9 10 9 5

1 10 3 4 13

8 3 9 6 3

输出样例

1

#include<iostream>
using namespace std;
int main()
{
	int a[110][110]={0};
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>a[i][j];
		}
	}
	int cnt=0;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(a[i-1][j]%2==1&&a[i+1][j]%2==1&&a[i][j-1]%2==1&&a[i][j+1]%2==1&&a[i-1][j-1]%2==1&&a[i-1][j+1]%2==1&&a[i+1][j-1]%2==1&&a[i+1][j+1]%2==1&&a[i][j]%2==0)
			{
				cnt++;
			}
		}
	}
	cout<<cnt;
	
	
	return 0;
}

是否相邻

题目描述: 同学们在操场上排成了一个 n 行 m 列的队形,假设这个队形中所有人年龄都不同,那么给定 2 个年龄后, 请你编程判断,这 2 个年龄对应的同学是否相邻? 相邻的定义是:如果两个同学在上下左右的位置是挨在一起的,那么就算是相邻的。 比如:如下是一个 3 行 4 列的队形

8 2 3 4

5 6 7 1

9 10 11 12

这个队形中每个数字代表了每个同学的年龄。 那么这个队形中 年龄 6 和年龄 10 两个值就是相邻的 输入 第 1 行有 2 个整数 n 和 m ,分别代表队形的行和列的值( 2≤n,m≤200) 接下来 n 行,每行有 m 个整数,代表每个同学的年龄(每个同学的年龄的值在 1∼100 之间) 最后一行输入 2 个整数,代表 2 个不同年龄的值。 输出 如果两个年龄的值是相邻的,请输出字符 `Y` ,否则请输出字符 `N`

输入复制

3 3

1 2 3

4 5 6

7 8 9

2 3

输出复制

Y

#include<iostream>
using namespace std;
int main()
{
	int a[110][110]={0};
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>a[i][j];
		}
	}
	int v,w;
	cin>>v>>w;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if((a[i-1][j]==w||a[i+1][j]==w||a[i][j-1]==w||a[i][j+1]==w)&&a[i][j]==v)
			{
				cout<<"Y";
				return 0;
			}
			else if((a[i-1][j]==v||a[i+1][j]==v||a[i][j-1]==v||a[i][j+1]==v)&&a[i][j]==w)
			{
				cout<<"Y";
				return 0;
			}
		}
	}
	cout<<"N";
	
	
	return 0;
}

矩阵加法

题目描述: 输入两个n行m列的矩阵A和B,输出它们的和A+B。 输入 第一行包含两个整数n和m,表示矩阵的行数和列数。1 <= n <= 100,1 <= m <= 100。 接下来n行,每行m个整数,表示矩阵A的元素。 接下来n行,每行m个整数,表示矩阵B的元素。 相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。 输出 n行,每行m个整数,表示矩阵加法的结果。相邻两个整数之间用单个空格隔开。

输入复制

3 3

1 2 3

4 5 6

7 8 9

9 8 7

6 5 4

3 2 1

输出复制

10 10 10

10 10 10

10 10 10

#include<iostream>
using namespace std;
int main()
{
	int a[110][110];
	int b[110][110];
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cin>>b[i][j];
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			a[i][j]=a[i][j]+b[i][j];
		}
	}
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	
	
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/245361.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么阿里云不能免费帮用户无限抵御DDoS攻击

DDoS防御需要成本&#xff0c;其中最大的成本就是带宽费用。带宽是阿里云向电信、联通、移动等运营商购买&#xff0c;运营商计算带宽费用时不会把DDoS攻击流量清洗掉&#xff0c;而是直接收取阿里云的带宽费用。阿里云云盾在控制成本的情况下会尽量为阿里云用户免费防御 DDoS攻…

PXI总线测试模块-6935B 微波本振源

6935B 微波本振源 PXI总线测试模块 650MHz~10GHz 01 产品综述 6935B微波本振源采用3U 2槽PXIe结构形式&#xff0c;具有频率范围宽、相位噪声低、频率分辨力高、体积小等优点。其优异的性能使其可适用于通信以及导航设备等众多领域产品的研发、生产、检测与维护中&#xff0c…

neuq-acm预备队训练week 9 P3367 【模板】并查集

题目描述 如题&#xff0c;现在有一个并查集&#xff0c;你需要完成合并和查询操作。 输入格式 解题思路 并查集的用法 AC代码 #include <bits/stdc.h> using namespace std; #define Max 1000001 int zi,xi[Max],yi[Max],Fa[Max]; int find(int x); bool qu(int u,…

垃圾回收 (GC) 在 .NET Core 中是如何工作的?

提起GC大家肯定不陌生&#xff0c;但是让大家是说一下GC是怎么运行的&#xff0c;可能大多数人都不太清楚&#xff0c;这也很正常&#xff0c;因为GC这东西在.NET基本不用开发者关注&#xff0c;它是依靠程序自动判断来释放托管堆的&#xff0c;我们基本不需要主动调用Collect(…

【十】python复合模式

10.1 复合模式简介 在前面的栏目中我们了解了各种设计模式。正如我们所看到的&#xff0c;设计模式可分为三大类:结构型、创建型和行为型设计模式。同时&#xff0c;我们还给出了每种类型的相应示例。然而&#xff0c;在软件实现中&#xff0c;模式并是不孤立地工作的。对于所…

智能故障诊断期刊推荐【中文期刊】

控制与决策 http://kzyjc.alljournals.cn/kzyjc/home 兵工学报 http://www.co-journal.com/CN/1000-1093/home.shtml 计算机集成制造系统 http://jsjjc.soripan.net/ 机械工程学报 http://www.cjmenet.com.cn/CN/0577-6686/home.shtml 太阳能学报 https://www.tynxb.org.c…

EM的理论基础

1 EM定义​ 电迁移(Electro-Migration)是指在外加电场下,电子和金属原子之间的动量转移导致材料的运动。这种动量传递导致金属原子(比如Cu原子)从其原始位置移位,如图7-1。这种效应随着导线中电流密度的增加而增加,并且在更高的温度下,动量传递变得更加严重。因此,在先…

TSINGSEE青犀城市道路积水AI检测算法视频智能监管解决方案

近年来&#xff0c;由于城市区域内涝频发&#xff0c;遇到强降水天气出现路面严重积水的情况时有发生&#xff0c;影响交通通行甚至引发事故。所以&#xff0c;对下穿隧道、下沉式道路等路面积水情况的监测显得尤为重要。传统的监管方式很难及时发现道路积水情况&#xff0c;那…

ES分词查询

全文检索介绍 全文检索的发展过程&#xff1a; 数据库使用SQL语句&#xff1a;select * from table where data like “%检索内容%”出现lucene全文检索工具&#xff08;缺点&#xff1a;暴露的接口相对复杂&#xff0c;且没有效率&#xff09;出现分布式检索服务框架solr&am…

小白也能懂的同城外卖跑腿小程序开发入门指南

当下&#xff0c;开发一款同城外卖跑腿小程序成为许多初学者关注的焦点。本文将为你提供一份小白也能理解的同城外卖跑腿小程序开发入门指南&#xff0c;带你一步步进入这个令人兴奋的领域。 一、了解市场需求与用户痛点 在开始开发同城外卖跑腿小程序之前&#xff0c;首先要深…

JavaScript中的this指向哪?

一、引言 this可以说是前端开发中比较常见的一个关键字&#xff0c;由于其指向是在运行时才确定&#xff0c;所以大家在开发中判断其方向时也会很模糊&#xff0c;今天就把this的指向问题拆开了&#xff0c;揉碎了&#xff0c;好好讲一讲。 先来看一个场景&#xff0c;看看该处…

客户互动智能升级:Amazon Connect 引入生成式AI

授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道。 前言&#xff1a; 在数字化时代&#xff0c;客户服务不仅仅是企…

【ET8框架入门】2.ET框架解析

菜单栏相关&#xff1a;ENABLE_DLL选项 ET->ChangeDefine->ADD_ENABLE_DLL/REMOVE_ENABLE_DLL 一般在开发阶段使用Editor时需要关闭ENABLE_DLL选项。该选项关闭时&#xff0c;修改脚本之后&#xff0c;会直接重新编译所有的代码&#xff0c;Editor在运行时会直接使用最…

如何在nacos中的配置在不同的环境服务下可实现配置共享

其实在微服务启动时&#xff0c;会去nacos读取多个配置文件&#xff0c;例如&#xff1a; [spring.application.name].yaml&#xff0c;例如&#xff1a;nacos-order-service.yaml[spring.application.name]-[spring.profiles.active].yaml&#xff0c;例如&#xff1a;nacos-o…

c语言快速排序(霍尔法、挖坑法、双指针法)图文详解

快速排序介绍&#xff1a; 快速排序是一种非常常用的排序方法&#xff0c;它在1962由C. A. R. Hoare&#xff08;霍尔&#xff09;提的一种二叉树结构的交换排序方法&#xff0c;故因此它又被称为霍尔划分&#xff0c;它基于分治的思想&#xff0c;所以整体思路是递归进行的。 …

基于Java+Swing+mysql学生选课成绩信息管理系统

基于JavaSwingmysql学生选课成绩信息管理系统 一、系统介绍二、功能展示三、项目相关3.1 乱码问题3.2 如何将GBK编码系统修改为UTF-8编码的系统&#xff1f; 四、其它1.其他系统实现 五、源码下载 一、系统介绍 学生教师信息管理、年级班级信息管理、课程信息管理、选课、成绩…

vue3+vite4中使用svg,使用iconfont-svg图标

记录一下vue3中如何使用svg图标&#xff0c;vue2中大家常用iconfont字体图标&#xff0c;现在vue3大家都又推荐svg的方式使用图表&#xff0c;包括elementplus组件库也变成使用svg方式引用图标。 1、创建svg组件 components/IconSvg.vue <template><svg class"…

Imagen 2 发布、Gemini Pro 免费体验、代码平台 Duet AI 上线,谷歌大爆发

在上周发布 Gemini 后&#xff0c;本周谷歌又有了新动作。 12 月 13 日&#xff0c;谷歌在其云平台上推出了一系列 AI 模型以供用户体验并实际应用&#xff1a;向开发者和企业开放 Gemini Pro、面向开发者和安全运营的 Duet AI、图像生成 Imagen 2 以及用于医疗保健场景的 Med…

python安装教程(2020最新),python安装详细教程

这篇文章主要介绍了python安装教程(2020最新)&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 1.从python官网下载python的安装包&#xff0c;我用的之前3.7.9的安装包 2.双击打…

成绩分级 C语言xdoj53

问题描述 给出一个百分制的成绩&#xff0c;要求输出成绩等级A,B,C,D,E。90分以上为A&#xff0c;80~89分为B,70~79分为C,60~69分为D&#xff0c;60分以下为E。 输入说明 输入一个正整数m&#xff08;0<m<100&#xff09; 输出说明 输出一个字符 输入样例 …