DP 農田個數

2021-09-03 03:06:33 字數 877 閱讀 9812

你的老家在河北農村。過年時,你回老家去拜年。你家有一片nm農田,將其看成乙個nm的方格矩陣,有些方格是一片水域。你的農村伯伯聽說你是學計算機的,給你出了一道題: 他問你:這片農田總共包含了多少個不存在水域的正方形農田。

兩個正方形農田不同必須至少包含下面的兩個條件中的一條:

邊長不相等

左上角的方格不是同一方格

input

輸入資料第一行為兩個由空格分開的正整數n、m(1<=m 第2行到第n+1行每行有m個數字(0或1),描述了這一片農田。0表示這個方格為水域,否則為農田

(注意:數字之間沒有空格,而且每行不會出現空格)

output

滿足條件的正方形農田個數。

f[i][j]用來存以i,j為結束點的方塊的最大邊長。

乙個公式:

當a==1時(當前位置是農田)

f[i][j]=min(f[i-1][j],f[i][j-1],f[i-1][j-1])+1;

然後再把所有求出的值加起來。

(初看公式十分神奇,仔細想想min的三個格仔與當前格仔的關係就明白了)

**

#include

#include

using

namespace std;

int n,m,f[

1001][

1001

],ans=0;

intmain()

if(i!=n)

getchar()

;//讀入換行

}printf

("%d"

,ans)

;}

DP 農田個數

你的老家在河北農村。過年時,你回老家去拜年。你家有一片n m農田,將其看成乙個n m的方格矩陣,有些方格是一片水域。你的農村伯伯聽說你是學計算機的,給你出了一道題 他問你 這片農田總共包含了多少個不存在水域的正方形農田。兩個正方形農田不同必須至少包含下面的兩個條件中的一條 邊長不相等 左上角的方格不...

SSL 農田個數 DP

輸入資料第一行為兩個由空格分開的正整數n m 1 m 第2行到第n 1行每行有m個數字 0或1 描述了這一片農田。0表示這個方格為水域,否則為農田 注意 數字之間沒有空格,而且每行不會出現空格 滿足條件的正方形農田個數。3 3110 110000 先加半邊的0 如 sample input 狀態轉移...

SSL ZYC 灌溉農田

題目大意 由於最近缺少降雨,農夫約翰決定在他的n塊農田之間建立乙個供水管網。每塊的位置可以用乙個二維座標來表示 xi,yi 在第i塊地和第j塊地之間修建乙個管道的話,代價是 xi xj 2 yi yj 2。農夫約翰想要建立乙個花費代價最小的供水管網,使得他所有的地都能被連線在一起 使得水能夠通過一系...