zoukankan      html  css  js  c++  java
  • 1287. Mars Canals(DP)

    1287

    水DP

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<vector>
     7 using namespace std;
     8 #define N 1402
     9 int dp[N][N][4];
    10 char s[N][N];
    11 int main()
    12 {
    13     int i,j,n;
    14     scanf("%d",&n);
    15     for(i = 0 ; i < n ; i++)
    16     cin>>s[i];
    17     dp[0][0][0] = 1;
    18     dp[0][n-1][3] = 1;
    19     for(i = 0 ; i < n ; i++)
    20     {
    21         dp[0][i][2] = 1;
    22         dp[i][0][1] = 1;
    23     }
    24     for(i = 0 ; i  < n ;i++)
    25         for(j = 0 ; j < n ; j++)
    26         {
    27             if(i!=0&&j!=0&&s[i][j]==s[i-1][j-1])
    28             {
    29                 dp[i][j][0] = dp[i-1][j-1][0]+1;
    30             }
    31             else
    32             dp[i][j][0] = 1;
    33             if(i!=0&&j!=n-1&&s[i][j]==s[i-1][j+1])
    34             {
    35                 dp[i][j][3] = dp[i-1][j+1][3]+1;
    36             }
    37             else
    38             dp[i][j][3] = 1;
    39             if(j!=0&&s[i][j]==s[i][j-1])
    40             {
    41                 dp[i][j][1] = dp[i][j-1][1]+1;
    42             }
    43             else
    44             dp[i][j][1] = 1;
    45             if(i!=0&&s[i][j]==s[i-1][j])
    46             {
    47                 dp[i][j][2] = dp[i-1][j][2]+1;
    48             }
    49             else
    50             dp[i][j][2] = 1;
    51         }
    52     int maxz1=0,maxz2=0;
    53     for(i = 0 ; i < n ; i++)
    54         for(j = 0 ; j < n ; j++)
    55         {
    56             int kk = max(max(dp[i][j][3],dp[i][j][0]),max(dp[i][j][1],dp[i][j][2]));
    57             if(s[i][j]=='S')
    58             {
    59                 if(kk>maxz1)
    60                 {
    61                     maxz1 = kk;
    62                 }
    63             }
    64             else if(kk>maxz2)
    65             maxz2 = kk;
    66         }
    67     if(maxz1>maxz2)
    68     {
    69         printf("S
    ");
    70         printf("%d
    ",maxz1);
    71     }
    72     else if(maxz1<maxz2)
    73     {
    74         printf("s
    ");
    75         printf("%d
    ",maxz2);
    76     }
    77     else
    78     {
    79         printf("?
    ");
    80         printf("%d
    ",maxz1);
    81     }
    82     return 0;
    83 }
    View Code

  • 相关阅读:
    [转载]qemu-kvm安装配置
    Hadoop通过c语言API访问hdfs
    hadoop和hdfs环境搭建
    OpenCV installation for Ubuntu 12.04
    homework-01
    linux命令2
    压缩tar
    anaconda 安装opencv
    anconda安装第三方库
    开源代码
  • 原文地址:https://www.cnblogs.com/shangyu/p/3379446.html
Copyright © 2011-2022 走看看