游戏
哥哥在上电脑课的时候,写了一个游戏。
游戏的内容是:在一个n×n的矩阵里,有若干个敌人。
你可以选择一个没有敌人的位置放置迫击炮,迫击炮会朝东南西北四个方向发射激光,具有穿透性能消灭射线上的所有敌人。
现在哥哥想考考你,把迫击炮放置在哪个位置上消灭的敌人数量最多。
输入格式
第一行一个正整数n(1≤n≤1000),表示矩阵的大小。
接下来n行,每行n个整数x(0≤x≤9),表示敌人的数量,相邻两数之间以一个空格分隔。输出格式一个整数,表示最多能消灭的敌人数量。
样例输入:
4
1 1 1 0
1 1 0 1
0 0 1 0
0 3 1 1
样例输出:
7
——————————————————
直接上代码
#include <bits/stdc++.h>
using namespace std;
int main(){
int num[1005][1005];
int n;
cin >> n;
int a[1005] = {},b[1005] = {};
for (int i=0; i< n; i++){
for (int j = 0; j < n; j++){
cin >> num[i][j];
a[i] += num[i][j];// 求得每行的敌人数量
b[j] += num[i][j];// 求得每列的敌人数量
}
}
int ans = 0;
for (int i=0; i<n; i++){
for (int j =0; j<n; j++){
if (num[i][j] == 0){ // 0为炮台点位,判断炮台位置
ans = max(ans, a[i]+b[j]); // 记录每个炮点中能消灭敌人数,获取最大值
}
}
}
cout << ans; //输出最大值
return 0;
}