find the largest subsquare surrounded by ‘w’ 和‘W’

2024-01-04 12:08

本文主要是介绍find the largest subsquare surrounded by ‘w’ 和‘W’,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一个char[][] board,里面有‘b’'B''w''W'四种,bB都表示black,wW都表示white,找最大的正方形面积,这个正方形四个边都是black,正方形中间随便黑白无所谓。Example:一个5x5的board如下,符合条件最大正方形是个3x3的,return面积9。
wwbww
wbbbb
bbWbw
Bbbbb
wwwww

参考:点击打开链接

public static void main(String[] args) {int mat1[][] = { { 'b', 'w', 'b', 'b', 'b', 'b' }, { 'b', 'w', 'b', 'b', 'w', 'b' },{ 'b', 'b', 'b', 'w', 'w', 'b' }, { 'w', 'b', 'b', 'b', 'b', 'b' },{ 'b', 'b', 'b', 'w', 'b', 'w' }, { 'w', 'w', 'b', 'w', 'w', 'w' } };int len = findSubSquare(mat1);System.out.println(len);int mat2[][] = { { 'w', 'w', 'b', 'w', 'w' }, { 'w', 'b', 'b', 'b', 'b' },{ 'b', 'b', 'w', 'b', 'w' }, { 'B', 'b', 'b', 'b', 'b' },{ 'w', 'w', 'w', 'w', 'w', 'w' } };len = findSubSquare(mat2);System.out.println(len);}static int getMin(int x, int y) {return (x < y) ? x : y;}// Returns size of maximum size subsquare matrix// surrounded by 'X'static int findSubSquare(int mat[][]) {int max = 1; // Initialize resultint len = mat.length;// Initialize the left-top value in hor[][] and ver[][]int[][] hor = new int[len][len];int[][] ver = new int[len][len];// Fill values in hor[][] and ver[][]for (int i = 0; i < len; i++) {for (int j = 0; j < len; j++) {if (mat[i][j] == 'w' || mat[i][j] == 'W')ver[i][j] = hor[i][j] = 0;else {hor[i][j] = (j == 0) ? 1 : hor[i][j - 1] + 1;ver[i][j] = (i == 0) ? 1 : ver[i - 1][j] + 1;}}}// Start from the rightmost-bottommost corner element and find// the largest ssubsquare with the help of hor[][] and ver[][]for (int i = len - 1; i >= 1; i--) {for (int j = len - 1; j >= 1; j--) {// Find smaller of values in hor[][] and ver[][]// A Square can only be made by taking smaller// valueint small = getMin(hor[i][j], ver[i][j]);// At this point, we are sure that there is a right// vertical line and bottom horizontal line of length// at least 'small'.// We found a bigger square if following conditions// are met:// 1)If side of square is greater than max.// 2)There is a left vertical line of length >= 'small'// 3)There is a top horizontal line of length >= 'small'while (small > max) {if (ver[i][j - small + 1] >= small && hor[i - small + 1][j] >= small) {max = small;}small--;}}}return max;}


这篇关于find the largest subsquare surrounded by ‘w’ 和‘W’的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/569280

相关文章

MongoDB学习—(6)MongoDB的find查询比较符

首先,先通过以下函数向BookList集合中插入10000条数据 function insertN(obj,n){var i=0;while(i<n){obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})i++;}}var BookList=db.getCollection("BookList")调用函数,这样,BookList

【NodeJS】Error: Cannot find module 'ms'

转载自:http://blog.csdn.net/echo_ae/article/details/75097004 问题: Error: Cannot find module 'ms'at Function.Module._resolveFilename (module.js:469:15)at Function.Module._load (module.js:417:25)at Module

leetCode#448. Find All Numbers Disappeared in an Array

Description Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this

访问controller404:The origin server did not find a current representation for the target resource

ider build->rebuild project。Rebuild:对选定的目标(Project),进行强制性编译,不管目标是否是被修改过。由于 Rebuild 的目标只有 Project,所以 Rebuild 每次花的时间会比较长。 参考:资料

mybatis错误——java.io.IOException Could not find resource comxxxxxxMapper.xml

在学习Mybatis的时候,参考网上的教程进行简单demo的搭建,配置的没有问题,然后出现了下面的错误! Exception in thread "main" java.lang.RuntimeException: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause:

Linux 中的 find 命令介绍以及使用

文章目录 Linux 中的 `find` 命令详解及使用示例`find` 命令的基本语法常用的 `find` 命令选项按文件名搜索:`-name`按文件类型搜索:`-type`按文件大小搜索:`-size`按修改时间搜索:`-mtime`按权限搜索:`-perm`按所有者搜索:`-user` 和 `-group` `find` 命令的常见操作删除找到的文件:`-exec` 和 `rm`查找并

mysql中find_in_set()函数

1.场景 假设有一个user用户表,表字段分别为:id(主键),name(姓名),age(年龄),hobby(爱好)。而一个人可能有好几个爱好,游泳啊篮球啊乒乓球啊等等。数据库里hobby字段存的是:游泳,篮球,乒乓球 而要想查所有喜欢游泳的人,就可以用find_in_set函数了 todo:贴图 2.使用 select *from user where find_in_set("游泳"

Failed to find style 'vpiCirclePageIndicatorStyle' in current theme

使用 ViewPagerIndicator 时 , 布局文件报的错 Missing styles. Is the correct theme chosen for this layout? Use the Theme combo box above the layout to choose a different layout, or fix the theme style refe

[LeetCode] 438. Find All Anagrams in a String

题:https://leetcode.com/problems/find-all-anagrams-in-a-string/description/ 题目 Given a string s and a non-empty string p, find all the start indices of p’s anagrams in s. Strings consists of lowerca

[LeetCode] 215. Kth Largest Element in an Array

题:https://leetcode.com/problems/kth-largest-element-in-an-array/description/ 题目 Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not th