题解 | #牛客泡泡堂#
牛客泡泡堂
http://www.nowcoder.com/practice/aab57945bc7446d69d6addecbf9001b6
题意
在一个的矩阵中每个元素的数值都为0或1,放置一个长宽分别为
与
的十字,求十字覆盖元素和的最大值。
下文中代表玩家数量(
)。
##18分做法:暴力
对于每一个点,暴力计算在这个点爆炸能炸死的人,代码如下
class Solution { public: //bool isLegal(Point a,int i,int j,int xl,int xr){return a.x==i||a.y==j&&a.x>=xl&&a.x<=xr;} int BoomKill(int n, int m, vector<Point>& Player) { int maxAns=0;//存储最大答案 for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ int ans=0;//存储在(i,j)位置放置炸弹的答案 for(Point p : Player){ int xl= max(1,i-m+1),xr=min(n,i+m-1); if(p.x==i||p.y==j&&p.x>=xl&&p.x<=xr) ++ans;//如果能炸死答案就加一 } if(ans>maxAns)maxAns=ans; } } return maxAns; } };
时间复杂度:,共有三层循环。
空间复杂度:,为Player容器占用的空间。