蒟蒻求助
  • 板块P1331 海战
  • 楼主Alfred_zhc
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/8/30 20:02
  • 上次更新2023/11/4 08:19:42
查看原帖
蒟蒻求助
550752
Alfred_zhc楼主2021/8/30 20:02

测试点2dev上输出There are * ships.,洛谷上输出Bad……救救孩子吧。46分代码

#include <cstdio>

int r, c;
char k[1010][1010];
bool u[1010][1010]={{0}};

bool ask(int x, int y)
{
	int n, l;
	bool s=0, h=0;
	for(int i=x;;i++)
	{
		for(int j=y;;j++)
		{
			if(u[i][j]==1) return 0;
			u[i][j]=1;
			if((k[i][j]=='.'||k[i][j]=='\000')&&j==y) {s=1; goto g;}
			if(k[i][j]=='.'||k[i][j]=='\000') break;
			n=j;
		}
		if(i==x)
		{
			l=n;
		}
		else if(l!=n)
		{
			return 0;
		}
		g:
		if(s)
		{
			for(int j=y+1;j<=l;j++)
			{
				if(k[i][j]=='#')
				{
					return 0;
				}
			}
			return 1;
		}
	}
}

int main()
{
	int sum=0;
	scanf("%d%d", &r, &c);
	for(int i=0;i<r;i++)
	{
		for(int j=0;j<=c;j++)
		{
			scanf("%c", &k[i][j]);
		}
	}
	for(int i=0;i<r;i++)
	{
		for(int j=1;j<=c;j++)
		{
			if(k[i][j]=='#'&&u[i][j]==0)
			{
				if(ask(i, j))
				{
					sum++;
				}
				else
				{
					printf("Bad placement.");
					return 0;
				}
			}
		}
	}
	printf("There are %d ships.", sum);
	return 0;
}
2021/8/30 20:02
加载中...