问题 D: 盖房子(house)

时间限制: 1 Sec  内存限制: 64 MB
提交: 27  解决: 16
[提交][状态][讨论版]

题目描述

FJ最近得到了面积为n*m的一大块土地,他想在这块土地上建造一所房子,这个房子必须膏形的。但是,这块土地并非十全十美,上面有很多不平坦的地方(也可以叫瑕疵)。这些瑕疵十分以至于根本不能在上面盖一砖一瓦。他希望找到一块最大的正方形无瑕疵土地来盖房子。不过,不是什么难题,FJ在10分钟内就轻松解决了这个问题。
现在,您也来试试吧。

输入

第1行为两个整数n,m(1≤n,m≤100)。接下来n行,每行m个数字,用空格隔开。0表萄土地有瑕疵,1表示该块土地完好。

输出

一个整数,最大正方形的边长。

样例输入

4 4
0 1 1 1
1 1 1 0
0 1 1 0
1 1 0 1

样例输出

2

思路:自己对于动态规划还是不是很理解,每次做新题总是找不到状态转移方程。
看了网上的解释,总是感觉不清楚,自己想了想,恍然大悟。
可以建立一个数组s[n][m],存储以这个点为右下角的正方形的最大边长。
a[n][m]   0 1 1 1            s[n][m]对应地是   0 1 1 1
    1 1 1 0 1 1 2 2
      0 1 1 0 0 1 2 2
     1 1 0 1 1 1 0 1
状态方程:s[i][j]=min(s[i-1][j],s[i][j-1],s[i-1][j-1])+1;
优化: 观察s[n][m]每次只用那一行以及上一行,所以只需建立s[2][m]的数组就可以。 未优化:
#include <iostream>
#include <cstdio> using namespace std; #define minn(a,b,c) (a>b? b:a)>c ? c:(a>b? b:a) int main()
{
int n,m;//行列
int a[][]={};//存储地面状况
int ans=;//始终保存最大的边长
scanf("%d %d",&n,&m);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
scanf("%d",&a[i][j]);
if(a[i][j]!=){
a[i][j]=(minn(a[i][j-],a[i-][j],a[i-][j-]))+;
ans=max(ans,a[i][j]);
}
}
}
printf("%d",ans);
return ;
}
优化代码:(错误!)
#include <iostream>
#include <cstdio> using namespace std; #define minn(a,b,c) (a>b? b:a)>c ? c:(a>b? b:a) int main()
{
int n,m;//行列
int a[][];//存储地面状况
int s[][];//s[i][j]表示以这个点为右下角的正方形的最大边长
int ans=;//始终保存最大的边长
scanf("%d %d",&n,&m);
for(int i=;i<n;i++){
for(int j=;j<m;j++){
scanf("%d",&a[i][j]);
if(i==){
s[][j]=a[i][j];
}
if(i==&&j==||j==&&i!=){
s[][]=a[][];
}
if(i!=&&j!=){
if(a[i][j]==){
s[][j]=;
}else{
s[][j]=minn(s[][j-],s[][j],s[][j-])+;
ans=max(ans,s[][j]);
}
}
}
if(i!=){
for(int k=;k<m;k++){
s[][k]=s[][k];
}
}
}
printf("%d",ans);
return ;
}

帮我找找错

PS:后来提交优化后的代码,也通过测试了,感觉思路正确,但就是WA!如果你发现错误请告知我。第一个代码是正确的。

这个题差点把我做疯!!!
 

 

【动态规划】盖房子(house)--未提交--已提交的更多相关文章

  1. 2106 Problem F Shuffling Along 中石油-未提交-->已提交

    题目描述 Most of you have played card games (and if you haven’t, why not???) in which the deck of cards ...

  2. 2078 Problem H Secret Message 中石油-未提交-->已提交

    题目描述 Jack and Jill developed a special encryption method, so they can enjoy conversations without wo ...

  3. 本人为巨杉数据库(开源NoSQL)写的C#驱动,支持Linq,全部开源,已提交github

    一.关于NoSQL的项目需求 这些年在做AgileEAS.NET SOA 中间件平台的推广.技术咨询服务过程之中,特别是针对我们最熟悉的医疗行业应用之中,针对大数据分析,大并发性能的需求,我们也在慢慢 ...

  4. 论Postgres的“已提交的而且 xmin’比当前事务的XID小的记录对当前事务才是可见的”

    最近在网上看到这样一句话Postgres“已提交的而且 xmin 比当前事务的XID小的记录对当前事务才是可见的”.先不评断这句话的正确性:看下这句话的结构,因果关系: 按照此话的意思:要postgr ...

  5. git修改已提交记录的注释

    已提交暂存区但还未提交远端仓库 命令:git commit --amend -m 已提交远端仓库 命令:git rebase 可以参考:http://www.cnblogs.com/dudu/p/47 ...

  6. SQL Server 已提交读快照 测试

    1. 打开数据库 已提交读快照 选项 2. 数据库 已提交读快照 模式下的测试 a) 测试表 Test b) 开启事务1,更新数据C2 = '200'(未提交) BEGIN TRAN ' WHERE ...

  7. TortoiseSVN 忽略文件 忽略已提交文件

    主要以下两种情况: 1.首次提交就做好了忽略拦截:项目首次提交到svn服务器的时候,把该删的删了,然后设置忽略规则,就没问题了. 2.提交一段时间忽然想忽略拦截:经常碰到的,发现设置忽略规则后,没法生 ...

  8. SQL Server已提交读快照隔离级别的设置

    如果要把SQL Server数据库事务隔离级别设置为已提交读快照隔离 如果直接运行下面的语句: ALTER Database [mydbname] SET READ_COMMITTED_SNAPSHO ...

  9. svn命令行修改已提交的版本备注

    svn命令行修改已提交的版本备注 参考文章: stackoverflow.com/questions/304383/how-do-i-edit-a-log-message-that-i-already ...

随机推荐

  1. 利用getHibernateTemplate实现简单的操作

    package org.tarena.dao; import java.sql.SQLException; import java.util.List; import javax.annotation ...

  2. 【poj1090】 Chain

    http://poj.org/problem?id=1090 (题目链接) 题意 给出九连环的初始状态,要求将环全部取下需要走多少步. Solution 格雷码:神犇博客 当然递推也可以做. 代码 / ...

  3. BZOJ2460 [BeiJing2011]元素

    Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石. 一般地,矿石越多则法力越 ...

  4. POJ 2828 Buy Tickets

    Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...

  5. html,body { margin:0; padding:0;border:0}

    body,html /* 设置窗口DIV为浏览器大小*/ { margin:; padding:; height:100%; } 下面代码 <!DOCTYPE html> <html ...

  6. 在cmd下编译一个简单的servlet时出现程序包javax.servlet不存在

    由于servlet和JSP不是Java平台JavaSE(标准版)的一部分,而是Java EE(企业版)的一部分,因此,必须告知编译器servlet的位置. 解决“软件包 javax.servlet不存 ...

  7. python库requests登录zhihu

    废了很大劲,开始搞错了登录post信息的网址,后来没找到xsrf信息,看了很多文章才搞定. 大概过程如下: 打开登录页面,同时打开fldder,输入信息去监控过程. 查看post了哪些信息,哪些是自己 ...

  8. 简短的几句js实现css压缩和反压缩功能

    写在前面 最近一直在整理css,但因为现在Visual Studio 2013太智能了,它每每在我按ctrl+E+D进行格式化代码的时候,就会将css进行层次格式化(如下图所示),而这个格式让我老大实 ...

  9. mysql 存储过程中注意的问题

    OPEN cur; REPEAT FETCH cur INTO int_type, int_element_id, int_num, int_user_id; IF NOT _DONE THEN IF ...

  10. Serenity框架官方文档翻译3.1(教程)

    3.教程 3.1教程: Movie Database 我们来用Serenity创建一个和IMDB相似的编辑界面的站点. 你能在下面的站点找到教程的源代码: https://github.com/vol ...