NC219676. 来自良心出题人wzc的简单题
描述
输入描述
第一行为一个整数n,代表矩阵的宽度。(1<=n<=10)接下来第1+i行(1<=i<=n),每行为空格隔开的n个整数a[i][j]。代表矩阵位置[i][j]的价值是多少。(0<=a[i][j]<=1e9)
输出描述
输出一个整数,代表能摧毁的最大价值。
示例1
输入:
5 2 2 2 2 2 2 0 2 0 2 2 2 2 2 2 2 0 2 0 2 2 2 2 2 2
输出:
34
说明:
有多种安放选择均可摧毁价值34,其中一种方案是炸弹放置在(3,1),(3,3),(3,5)示例2
输入:
8 10 15 3 3 12 16 7 2 1 6 19 19 1 12 19 14 7 0 6 3 15 1 16 2 13 7 12 5 2 9 2 5 13 0 14 6 19 10 9 1 0 13 1 1 14 15 7 7 1 12 3 16 12 14 12 9 11 15 16 14 1 12 1 8
输出:
280
C++ 解法, 执行用时: 105ms, 内存消耗: 428K, 提交时间: 2022-02-26 15:47:21
#include<iostream> #include<cmath> using namespace std; int main(){ long long n,i,j,a[105],k,l,sum,max=0; cin>>n; for(i=1;i<=n*n;i++){ cin>>a[i]; } if(n==1)max=a[1]; for(i=1;i<=n*n;i++){ for(j=i+1;j<=n*n;j++){ for(k=j+1;k<=n*n;k++){ sum=0; for(l=1;l<=n*n;l++){ if(l-i==2*n||l-i==n||i-l==2*n||i-l==n||l-k==2*n||l-k==n||k-l==2*n||k-l==n||l-j==2*n||l-j==n||j-l==2*n||j-l==n||abs(i-l)<=2&&(i-1)/n==(l-1)/n||abs(j-l)<=2&&(j-1)/n==(l-1)/n||abs(k-l)<=2&&(k-1)/n==(l-1)/n) sum=sum+a[l]; } if(sum>max)max=sum; } } } cout<<max; }