题目长蛇阵 望各位大佬指点 贴上我的代码:
#include <bits/stdc++.h>
using namespace std;
bool b[1001][1001];
long long a[1001][1001];
int main() {
long long ans=0,num1=0,num2=0,all=0,i,j,x,y,n,m;
cin>>n>>m;
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
cin>>a[i][j];
}
}
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
if(a[i][j]==1&&!b[i][j]) {
num1=num2=all=0;
for(x=i-1,y=j; x>=1; x--) {
if(a[x][y]==0) break;
else num1++,b[x][y]=true;
}
for(x=i+1,y=j; x<=n; x++) {
if(a[x][y]==0) break;
else num2++,b[x][y]=true;
}
all=num1+num2;
if(all>ans) ans=all+1;
num1=num2=all=0;
for(x=i,y=j-1; y>=1; y--) {
if(a[x][y]==0) break;
else num1++,b[x][y]=true;
}
for(x=i,y=j+1; y<=m; y++) {
if(a[x][y]==0) break;
else num2++,b[x][y]=true;
}
all=num1+num2;
if(all>ans) ans=all+1;
num1=num2=all=0;
for(x=i-1,y=j-1; x>=1; x--,y--) {
if(a[x][y]==0||y<1) break;
else num1++,b[x][y]=true;
}
for(x=i+1,y=j+1; x<=n; x++) {
if(a[x][y]==0||y>n) break;
else num2++,b[x][y]=true;
}
all=num1+num2;
if(all>ans) ans=all+1;
}
}
}
cout<<ans<<endl;
return 0;
}