蒟蒻求助,AC6个点,WA4个点
  • 板块灌水区
  • 楼主jacky_zsq
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/5/4 20:33
  • 上次更新2023/11/7 03:10:15
查看原帖
蒟蒻求助,AC6个点,WA4个点
263017
jacky_zsq楼主2020/5/4 20:33

题目长蛇阵 望各位大佬指点 贴上我的代码:

#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;
}
2020/5/4 20:33
加载中...