简单题求调,硬是没盯出来哪里错了
查看原帖
简单题求调,硬是没盯出来哪里错了
305895
Take_A_Single_6楼主2024/4/7 23:58
#include<bits/stdc++.h>
#define int long long
#define maxn 1000005
#define mod 998244353
#define inf 2147483647
using namespace std;
inline int read()
{
    int SS=0,WW=1;
    char ch=getchar();
    while(ch<'0'||ch>'9')
	{
        if(ch=='-')WW=-1;
        ch = getchar();
    }
    while(ch>='0'&&ch<='9')
	{
        SS=(SS<<1)+(SS<<3)+(ch^48);
        ch=getchar();
    }
    return SS*WW;
}
inline void write(int XX)
{
    if(XX<0)putchar('-'),XX=-XX;
    if(XX>9)write(XX/10);
    putchar(XX% 10 + '0');
}
bool f[1005][1005],ok;
char a[1005][1005];
int n,m,o1[maxn],o2[maxn],o3[maxn],cnt,l;
signed main()
{
	n=read(),m=read();
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>a[i][j];
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(a[i][j]=='*')
			{
				l=1;
				while(1)
				{
					if(i-l<1||i+l>n||j-l<1||j+l>m)break;
					if(a[i-l][j]!='*'||a[i+l][j]!='*'||a[i][j-l]!='*'||a[i][j+l]!='*')break;
					++cnt,o1[cnt]=i,o2[cnt]=j,o3[cnt]=l,f[i-l][j]=f[i+l][j]=f[i][j-l]=f[i][j+l]=f[i][j]=1,l++;
				}
			}
		}
	}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			if(!f[i][j]&&a[i][j]=='*')ok=1;
	if(ok)puts("-1");
	else
	{
		write(cnt),puts("");
		for(int i=1;i<=cnt;i++)
			write(o1[i]),putchar(' '),write(o2[i]),putchar(' '),write(o3[i]),puts("");
	}
	return 0;
}
2024/4/7 23:58
加载中...