首页 > 其他分享 >最大正方形

最大正方形

时间:2024-07-31 21:26:31浏览次数:15  
标签:arr 最大 int ++ len 正方形 数组

#题目要求#

#题目分析#

1.正方形边长相等

2.正方形中所有对象必须为1

#代码撰写#

1.主函数部分,将二维数组设置为[5][4],并借用random函数为数组赋值

设置boxCheck函数为求出该二维数组中由1组成的最大正方形

public static void main(String[] args) {
		// 创建数组
		int[][] arr = new int[5][4];
		random(arr);
		int maxArea = boxCheck(arr);
		System.out.println("最大的正方形面积是" + maxArea);

	}

 2.random方法生成数组,利用两层循环为数组赋值

//方法随机生成数组 
	public static void random(int[][] arr) {
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[0].length; j++) {
				arr[i][j] = (int) (Math.random() * 2);
				System.out.print(arr[i][j] + "\t");
			}
			System.out.println("");
		}
	}

3.boxCheck方法找到最大的正方形

主要思想:将定义的数组看成一个长方形,比较两边长得到较小值,以较小值作为基准框选正方形判断是否是内部元素全为1的正方形,如果不是,则进行上下左右的移动。在移动结束后如果得到的正方形依旧不符合条件则对框选正方形的边长减一,再次进行上述操作直到得到首个符合题意的内部全为1的正方形即为最大正方形,载根据边长相乘就可以得出面积。

//方法生成框选区域进行遍历
	public static int boxCheck(int[][] arr) {
		// 根据数组的两个下表找到数组的正方形的最大边长(最大边长是二者之中较小的角标)
		int len = Math.min(arr.length, arr[0].length);
		// 因为最大边长为4(arr[5][4]),虚构一个4*4的正方形在数组中框选
		while (len > 1) {
			for (int i = 0; i < arr.length - len; i++) {// 在循环中将虚构的正方形下移
				for (int j = 0; j < arr[0].length - len; j++) {// 在循环中将虚构的正方形右移
					boolean key = true;// 表明变量,后续有用
					// 遍历框选正方形中每个数据,判断是不是0
					o: for (int abscissa = i; abscissa < i + len; abscissa++) {// 遍历横坐标
						for (int ordinate = j; ordinate < j + len; ordinate++) {
							if (arr[abscissa][ordinate] == 0) {
								key = false;
								break o;
							}
						}
					}
					if (key == true) {
						return len * len;
					}
				}
				
			}len--;// 4*4遍历结束不存在不合要求的正方形,让边长减一重新遍历
			
		}
		return len * len;
	}

#运行结果#

标签:arr,最大,int,++,len,正方形,数组
From: https://blog.csdn.net/m0_72186118/article/details/140730498

相关文章

  • PyQt:最大化窗口时如何防止处理多个调整大小事件?
    我有一个QMainWindow包含一个子QWidget包含自身aQLabel当窗口最大化时(例如,通过单击窗口上的最大化图标),QLabel.resizeEvent()处理程序被调用多次(据说跟随窗口的逐渐放大,直到占据整个桌面空间)。事件处理程序中的代码调用setPixmap(......
  • 使用变动和观察(Perturb and Observe)最大功率点跟踪(MPPT)算法控制升压变换器的MOSFET/IG
     ......
  • 找出数组中最大和最小值
    找出数组中最大和最小值/*数组获取最值(获取数组中的最大值最小值)*/publicclassArrayTest2{publicstaticvoidmain(String[]args){int[]arr={123,451,45,12,556,12,412};//1、默认将第一个元素作为最大值以及最小值int......
  • c# RSA 要解密的数据超过此模块的最大值128/256字节
    publicstringDecrypt(){varbase64EncryptedData="";stringprivateKey=@"<RSAKeyValue>....</RSAKeyValue>";RSACryptoServiceProviderprovider=newRSACryptoServiceProvider();provider.FromXml......
  • 代码随想录day14 || 226 翻转二叉树,101 对称二叉树, 104 二叉树的最大深度, 111 二叉树
    226翻转二叉树funcinvertTree(root*TreeNode)*TreeNode{ //思考,广度优先遍历,对于每一层,翻转其左右子节点 ifroot==nil{ returnnil } queue:=list.New() queue.PushBack(root) size:=1//存储每一层的节点个数 forqueue.Len()>0{ varcountint ......
  • 最大子段和 - 题解
    最大子段和时间限制:C/C++1000MS,其他语言2000MS内存限制:C/C++128MB,其他语言256MB描述给出一个长度为\(n\)的序列\(a\),选出其中连续且非空的一段使得这段和最大。输入描述第一行是一个整数,表示序列的长度\(n\)。第二行有\(n\)个整数,第\(i\)个整数表示序列的第......
  • python找出字典中value最大值的几种方法
    假设定义一字典,m={"a":3,"e":6,"b":2,"g":7,"f":7,"c":1,"d":5},在不知道key的情况下如何找出字典中value最大的所有key-value对?下面讨论几种方法。1)通过m.values()和max()函数第一步,通过max()函数找到字典中的value最大值。max(m.values())结果为7第二步,再通......
  • LeetCode654. 最大二叉树
    题目链接:https://leetcode.cn/problems/maximum-binary-tree/description/题目叙述给定一个不重复的整数数组nums。最大二叉树可以用下面的算法从nums递归地构建:创建一个根节点,其值为nums中的最大值。递归地在最大值左边的子数组前缀上构建左子树。递归地在最大......
  • C语言----对调最大数与最小数位置
    对调最大数与最小数位置实例说明:        从键盘中输入一组数据,找出这组数据中的最大数与最小数,将最大数与最小数位置互换,并将互换后的数据再次输出。实现过程:打开VisualC++6.0开发环境,新建一个C源文件,并输入要创建C源文件的名称。引用头文件,代码如下:#include<s......
  • 数学建模--最小费用最大流问题
    目录数学模型算法步骤实现方法应用实例总结最小费用最大流问题的最新求解算法有哪些?在实际应用中,最小费用最大流问题在哪些领域表现最为突出?如何结合最小费用最大流问题和其他运筹学模型以解决更复杂的问题?最小费用最大流问题的求解过程中存在哪些常见问题及其解决方......