作业帮 > 综合 > 作业

2.最后的战场(动态规划)pascal (war.pas/c/cpp)

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/29 08:53:02
2.最后的战场(动态规划)pascal (war.pas/c/cpp)
TINLTMA想要寻找一块正方形平地作为战场,大陆是矩阵,其中有0有1,“0”表示该格子是平地,而“1”表示该格子是沟壑.我们要找尽量大的一块正方形区域,使这块区域中只包含平地而不包含任何沟壑.输出最大的正方形区域的边长.【输入】 输入文件名为war.in.输入第一行包含两个整数N、M,
输出包含且仅包含一行,表示最大的正方形区域的边长.
【样例】
war.in
War.out
3 2
0 0
0 0
1 1
2
【数据规模约定】
对于100%的数据,
if (map[i,j]='0') then f[i,j]:=f[i-1,j-1]+1
else f[i,j]:=max{f[i,j-1],f[i-1,j]};
map表示地图
f[i,j]表示以i,j为右下角,1,1为左上角的矩形中最大的正方形
再问: 这是方程吗?程序也附上吧》
再答: 好吧 原来是错的 const maxn=100; maxm=100; var i,j,k,n,m,ans:longint; f,map,left,up:array[0..maxn+1,0..maxm+1]of longint; Function min(a,b,c:longint):longint; begin min:=maxlongint; if a