整理玩具 第九届蓝桥杯决赛第四题 java实现
标题:整理玩具
小明有一套玩具,一共包含NxM个部件。这些部件摆放在一个包含NxM个小格子的玩具盒中,每个小格子中恰好摆放一个部件。
每一个部件上标记有一个0~9的整数,有可能有多个部件标记相同的整数。
小明对玩具的摆放有特殊的要求:标记相同整数的部件必须摆在一起,组成一个矩形形状。
如以下摆放是满足要求的:
00022
00033
44444
12244
12244
12233
01234
56789
以下摆放不满足要求:
11122
11122
33311
111111
122221
122221
111111
11122
11113
33333
给出一种摆放方式,请你判断是否符合小明的要求。
输入
输入包含多组数据。
第一行包含一个整数T,代表数据组数。 (1 <= T <= 10)
以下包含T组数据。
每组数据第一行包含两个整数N和M。 (1 <= N, M <= 10)
以下包含N行M列的矩阵,代表摆放方式。
输出
对于每组数据,输出YES或者NO代表是否符合小明的要求。
【样例输入】
3
3 5
00022
00033
44444
3 5
11122
11122
33311
2 5
01234
56789
【样例输出】
YES
NO
YES
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。
解题思路:记录下首次出现这个数字的坐标和最后一次出现的坐标,算出如果是矩形,应该出现多少次,进行比较即可。(用TreeSet记录出现的数字,用来去重)
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;public class ZhengLiWnaJu {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc=new Scanner(System.in);int T=sc.nextInt();for (int i = 0; i < T; i++) {int n=sc.nextInt();int m=sc.nextInt();int[][] arr=new int[n][m];TreeSet<Integer> ts=new TreeSet<Integer>();//录入数据for (int j = 0; j < n; j++) {String s=sc.next();for (int k = 0; k < s.length(); k++) {//System.out.println("K:"+k+"j:"+j);arr[j][k]=s.charAt(k)-48;
// System.out.println(arr[j][k]);ts.add(arr[j][k]);} }boolean flag=true;//遍历判断for (int x : ts) {if(!jilu(x,arr))flag=false;
// System.out.println(flag);}if(flag)System.out.println("YES");elseSystem.out.println("NO");}}public static boolean jilu(int x,int[][] arr) {boolean flag=true;//首坐标int a1=0;int a2=0;//末尾坐标int b1=0;int b2=0;int GeShu=0; //数字总出现个数for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {if(flag&&x==arr[i][j]) {a1=i;a2=j;flag=false;
// System.out.println("a1:"+a1+"a2:"+a2);}if(x==arr[i][j]) {b1=i;b2=j;
// System.out.println("b1:"+b1+"b2:"+b2);GeShu++;}
// System.out.println("x:"+x+"arr:"+arr[i][j]);}}//进行判断if(a1==b1&&GeShu==(b2-a2+1)) {return true;}else if(a2==b2&&GeShu==(b1-a1+1))return true;else if(GeShu==((b1-a1+1)*(b2-a2+1)))return true;elsereturn false;}}
整理玩具 第九届蓝桥杯决赛第四题 java实现相关推荐
- 第九届蓝桥杯决赛JavaC组真题——详细答案对照(完整版)
目录 测试数据下载地址: 标题:年龄问题 标题:海盗与金币 标题:全排列 标题:约瑟夫环 标题:交换次数 标题:自描述序列 测试数据下载地址: [https://download.csdn.net/d ...
- 第九届 蓝桥杯 决赛 交换次数
问题描述 IT产业人才需求节节攀升.业内巨头百度.阿里巴巴.腾讯(简称BAT)在某海滩进行招聘活动. 招聘部门一字排开.由于是自由抢占席位,三大公司的席位随机交错在一起,形如: ABABTATT,这使 ...
- 2018第九届蓝桥杯-决赛-Java大学-C组
标题:年龄问题 s夫人一向很神秘.这会儿有人问起她的年龄,她想了想说: "20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍". 你能算出s夫人现在的年龄吗? ...
- c语言中猴子拿香蕉的代码题,猴子分香蕉(2018年第九届蓝桥杯省赛第二题)
```java /** * 标题:猴子分香蕉 5只猴子是好朋友,在海边的椰子树上睡着了.这期间,有商船把一大堆香蕉忘记在沙滩上离去. 第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份 ...
- 2018第九届蓝桥杯省赛真题 C语言B组 第一题
标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 答案:125 可以被四百整除,所以是闰年,二 ...
- problem b: 一年中的第几天_第九届蓝桥杯B组试题
1. 标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. "============= ...
- 全球变暖java_Java实现第九届蓝桥杯全球变暖
全球变暖 题目描述 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... .##.... ....##. ...
- 关于2018年第九届蓝桥杯省赛(江苏赛区)
为啥到现在才写呢...就是懒,是真的懒.题也没刷几个 (下面题目的超链接转自这里,并不是本人解法..只是因为有题目还有题解) 4.1举行的蓝桥杯也可以说是"愚人杯"了 早早的跟同学 ...
- 使用JavaScript解答2018第九届蓝桥杯C/C++省赛A组试题
大三时参加过第七届蓝桥杯个人赛及团队赛,转眼已经两年,最近看了看第九届蓝桥杯试题,打算用JavaScript实现一下. 题目1 标题:分数 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + ...
最新文章
- java爬虫面试题_使用Java实现网络爬虫
- 秘鲁农业谋定出口-国际农民丰收节贸易会:期待对华准入
- 音视频PaaS的“未毕之旅”
- ArcGIS Engine 10.2开发环境搭建
- 在Spring中使用Asciidoctor:使用Spring MVC渲染Asciidoc文档
- MySQL 我们来聊聊 count(*) 语句的优化方式有哪些?
- 进程调度 操作系统第二章知识点归纳总结
- 京东6月18日正式登陆港交所 港股暗盘开涨超7%
- 【个人笔记】OpenCV4 C++ 图像处理与视频分析 10课
- MySQL 创建数据库并且指定编码
- CentOS 6.5下安装Docker
- Python爬取链家成都二手房源信息 asyncio + aiohttp 异步爬虫实战
- 【202209秋招软开银行面试C++】
- Entity Framework 基础知识走马观花
- 使用华为手机怎么从网上打印资料?
- 炎黄盈动易鲸云低代码平台,全面助推企业数字化转型升级
- python生成递归json_python函数、递归、json模块操作
- 移动端vue+vant+高德地图实现拖拽选址,周边选址,搜索选址,自动定位,选择城市功能,获取地址经纬度,详细地址
- Android连接多个usb,Android实现USB连接
- linux的掩码长度,Bash 实现子网掩码与前缀长度互转