【USACO3-3-4】家的范围 dp

原题

#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std;

#define N 309

char a[N][N];
int dp[N][N];
int res[N];
int n;

int main()
{
    scanf("%d",&n);
    for (int i=0;i<n;i++) scanf("%s",a[i]);
    for (int i=0;i<n;i++) dp[0][i]=a[0][i]-'0';
    for (int i=0;i<n;i++) dp[i][0]=a[i][0]-'0';
    for (int i=1;i<n;i++)
        for (int j=1;j<n;j++)
            if (a[i][j]-'0')	dp[i][j]=min(min(dp[i][j-1],dp[i-1][j]),dp[i-1][j-1])+1,res[dp[i][j]]++;
    for (int i=n;i>=3;i--) res[i-1]+=res[i];
    for (int i=2;i<=n;i++)
        if (res[i]) printf("%d %d\n",i,res[i]);
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/dadatu_zhao/article/details/80441552
dp4
DP
DP?
今日推荐