码迷,mamicode.com
首页 > 其他好文 > 详细

hihocoder 1664

时间:2017-12-17 20:58:25      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:main   ems   ati   java   static   .com   ref   思路   ann   

http://hihocoder.com/problemset/problem/1664

求01间隔矩阵的最大边长

思路:转移方程 dp[i][j] = min(dp[i-1][j-1],min(dp[i-1][j],dp[i][j-1]))

 1 import java.math.BigInteger;
 2 import java.util.Arrays;
 3 import java.util.Map;
 4 import java.util.Scanner;
 5 
 6 public class Main {
 7     
 8     public static void main(String[] args) {
 9         Scanner cin = new Scanner(System.in);
10         int [][]cube = new int[1002][1002];
11         int [][]dp = new int[1002][1002];
12         String s;
13         int m,n;
14         m = cin.nextInt();
15         n = cin.nextInt();
16         for(int i = 1;i<=m;i++){
17             s = cin.next();
18             for(int j = 1;j<=n;j++)
19                 cube[i][j] = s.charAt(j-1)-‘0‘;
20         }
21         for(int i = 1;i<=m;i++)
22             dp[i][1] = 1;
23         for(int i = 1;i<=n;i++)
24             dp[1][i] = 1;
25         for(int i = 2;i<=m;i++)
26             for(int j = 2;j<=n;j++){
27                 if(cube[i-1][j-1]==cube[i][j]&&cube[i-1][j]!=cube[i][j]&&cube[i][j-1]!=cube[i][j]){
28                     int val = Math.min(dp[i-1][j], Math.min(dp[i][j-1], dp[i-1][j-1]));
29                     if(val==0)
30                         dp[i][j] = 2;
31                     else 
32                         dp[i][j] = val+1;
33                 }
34             }
35         int ans = 0;
36         for(int i = 1;i<=m;i++)
37             for(int j = 1;j<=n;j++)
38                 if(dp[i][j]>ans)
39                     ans = dp[i][j];
40         System.out.println(ans);
41     }
42 }

 

hihocoder 1664

标签:main   ems   ati   java   static   .com   ref   思路   ann   

原文地址:http://www.cnblogs.com/Tree-dream/p/8053030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!