01矩阵
来源:互联网 发布:淘宝朋友代付款 编辑:程序博客网 时间:2024/06/04 19:44
描述
给定一个NxM的01矩阵,小Hi希望从中找到一个01间隔的子方阵,并且方阵的边长越大越好。
例如对于
01001001000101010101010101010101010
在右下角有一个4x4的01间隔方阵
代码(动态规划):
import java.util.Scanner;public class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); String ss = scan.nextLine(); String[] str = ss.split(" "); int n = Integer.parseInt(str[0]); int m = Integer.parseInt(str[1]); int[][] dp = new int[n][m]; if(m < 2 || n < 2){ System.out.println(-1); return; } String[] matrix = new String[n]; for(int i = 0;i < n;i++){ matrix[i] = scan.nextLine(); } for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ dp[i][j] = 1; } } int max = -1; for(int i = 1;i < n;i++){ for(int j = 1;j < m;j++){ if(!(matrix[i].charAt(j) != matrix[i].charAt(j-1) && matrix[i].charAt(j) != matrix[i-1].charAt(j))){ continue; } int top = dp[i][j-1]; int left = dp[i-1][j]; int tmp = Math.min(top,left); if(matrix[i-tmp].charAt(j-tmp) != matrix[i-tmp+1].charAt(j-tmp) && matrix[i-tmp].charAt(j-tmp) != matrix[i-tmp].charAt(j-tmp+1)) dp[i][j] = tmp+1; else dp[i][j] = tmp; max = max > dp[i][j]?max:dp[i][j]; } } System.out.println(max); }}
阅读全文
0 0
- 01 矩阵
- 01矩阵
- 最大01 子矩阵
- 随机生成01矩阵
- POJ1830,01矩阵高斯消元
- 01矩阵最大正方形
- 最大01子矩阵
- 01:矩阵交换行
- 矩阵
- 矩阵
- 矩阵
- 矩阵
- 矩阵
- 矩阵
- 矩阵
- 矩阵
- 矩阵
- 矩阵
- 二级列表简单实现二级列表
- HTML中用marquee标签实现跑马灯滚动效果
- H5语义化标签和媒体化查
- java--IO流(前半部分)
- ARM异常处理方式简单介绍
- 01矩阵
- 高效找出两个List中不同的元素
- 排列组合错排
- memcache、redis原理对比
- jQuery:事件操作(一)
- udp
- 洞穴探测
- idea右侧的maven框没了
- 解决ServerTomcatv7.0Serveratlocalhostfailedtostart.