【DP】 打砖块

这篇博客介绍了一个关于打砖块的游戏问题,玩家可以消掉以自己为左上角的一个n*n矩阵内的所有砖块。问题求解的是最多能消掉多少块砖。博客提供了输入输出样例,数据范围,并解释了解题思路,即利用动态规划的方法来解决,与求最大子矩阵之和类似,但需要考虑边长限制。
摘要由CSDN通过智能技术生成

题目

KXT是一个很无聊的小朋友,一天到晚都在打坐…
  一天,被他发现了一个比打坐更无聊的事情——打砖块。很多块砖分布在一个mm的矩阵中,他可以消掉以他为左上角顶点的一个nn的矩阵里的所有砖块。
  喜欢偷懒的他请来了你帮他计算可以消掉最多的砖块数(只能消一次)。

输入

第一行:用空格隔开的三个整数n、m、k。
  接下来k行,每行2个用空格隔开的整数Xi、Yi,表示第i块砖在Xi行、Yi列的位置。

输出

为可以消掉最多的砖块数。

输入输出样例

输入

5 10 11
2 1
4 6
4 9
3 9
9 7
9 9
7 9
8 10
8 8
8 6
10 2

输出

6

样例解释

在这里插入图片描述
站在第4行、6列的位置,可以消除6个方块。

数据范围

n<=m; k<=m*m 
60%:n<=70; m<=70; k<=4900 
100%:n<=1000; m<=1000; k<=1000000   

解题思路

这道题与求最大子矩阵之和很像,只不过是多了一个边长限制,那么只需要在计算及循环上做一下改动就可以了。

代码

#include<iostream>
#include<cstdio>
using namespace std;
int m,k,n,a[
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值