80分求指点
查看原帖
80分求指点
311110
_djc_楼主2022/3/9 21:02

思路:直接暴力 我是先横行再竖行查找空地,边查边改答案 代码冗长,但我找不到错误 只有80分,第四个第五个测试点没过 求指点QWQ;

#include<bits/stdc++.h>
using namespace std;
char a[1000][1000];
int x[1000],y[1000],as=0;
int main(){
	int n=0,m=0,k=0;
	cin>>n>>m>>k;
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			cin>>a[i][j];
	for(int i=0;i<n;i++){
		int ty=0;
		for(int j=0;j<m+1;j++){
			if(a[i][j]=='.') ty++;
			else{
				y[i]=max(ty,y[i]);
				ty=0;
				if(y[i]>=k){
					as+=y[i]-k+1;
					y[i]=0;
				}
			}
		}
	}
	for(int i=0;i<m;i++){
		int tx=0;
		for(int j=0;j<n+1;j++){
			if(a[j][i]=='.') tx++;
			else{
				x[i]=max(tx,x[i]);
				tx=0;
				if(x[i]>=k){
					as+=x[i]-k+1;
					x[i]=0;
				}
			}
		}
	}
	cout<<as;
	return 0;
} 
2022/3/9 21:02
加载中...