@[panrong](/user/1044970) 22行开始的for循环内的e改成i
by Shirley_ninefish @ 2023-12-10 17:29:53
@[Shirley_ninefish](/user/796071)
还是不对嘤嘤嘤
by panrong @ 2023-12-12 17:19:11
@[panrong](/user/1044970) c和d数组开小了,总共有n*n个点,你只开n+1肯定不够啊
```cpp
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,b=0,e=0,s=0;
cin>>n;
int a[n+1][n+1],c[n*n+1],d[n*n+1];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
if(a[i][j]==0){
b=1;
e+=1;
c[e]=i;
d[e]=j;
}
}
}
if(b==0){
cout<<"Bad Game!";
return 0;
}
for(int i=1;i<=e;i++){
int f=0;
for(int j=c[i]+1;j<=n;j++){
if(a[j][d[i]]!=0){
f+=a[j][d[i]];
}
}
for(int j=c[i]-1;j>0;j--){
if(a[j][d[i]]!=0){
f+=a[j][d[i]];
}
}
for(int j=d[i]+1;j<=n;j++){
if(a[c[i]][j]!=0){
f+=a[c[i]][j];
}
}
for(int j=d[i]-1;j>0;j--){
if(a[c[i]][j]!=0){
f+=a[c[i]][j];
}
}
if(f>s){
s=f;
}
}
cout<<s;
return 0;
}
```
by Shirley_ninefish @ 2023-12-12 19:58:38
这个题直接用前缀和做就可以,不用那么复杂
by qusia_MC @ 2023-12-22 07:46:35
你这个时间复杂度为O(容身之地的个数*n),
假如n的范围再大一点你就不行了
by qusia_MC @ 2023-12-22 07:48:32