题解 | #扫雷#

扫雷

http://www.nowcoder.com/practice/d5f277427d9a4cd3ae60ea6c276dddfd


int Check_( char(*pc)[1000], char c, int n, int m,int i,int j)
{
	int flag=0;
	if (c == '.')
	{
		//上下六个
		for (int k = 0; k < 3; k++)
		{
			//上面的三个
			if (pc[i - 1][j - 1 + k] == '*' &&
				((i - 1) < n) && ((i - 1) >= 0) &&
				((j - 1 + k) < m) && ((j - 1 + k) >= 0)
				)
				flag++;
			//下面的三个
			if (pc[i + 1][j - 1 + k] == '*' &&
				((i + 1) < n) && ((i + 1) >= 0) &&
				((j - 1 + k) < m) && ((j - 1 + k) >= 0)
				)
				flag++;
		}
		//左右两个
		if (pc[i][j + 1] == '*' && ((j + 1) < m && (j + 1) >= 0))
			flag++;
		if (pc[i][j - 1] == '*' && ((j - 1) < m && (j - 1) >= 0))
			flag++;
		return flag;
	}
	//本身是星号,因为周围八个数所以打印数字不可能大于8,选择返回10
	else if (c == '*')
		return 10;
	else
		return 0;

}



int main()
{
	int n = 0, m = 0;
	scanf("%d %d", &n, &m);
	char arrc[1000][1000] = { 0 };
	int arrn[1000][1000] = { 0 };
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			scanf(" %c", &arrc[i][j]);
		}
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			arrn[i][j] = Check_(arrc, arrc[i][j], n, m, i, j);
			if (arrn[i][j] < 10)
				printf("%d", arrn[i][j]);
			else
				printf("*");
		}
		printf("\n");
	}
	return 0;
}
全部评论

相关推荐

05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
三题看不懂四题不明白二题无法AC&nbsp;T=int(input())&nbsp;for&nbsp;_&nbsp;in&nbsp;range(T):&nbsp;n=int(input())&nbsp;s=input().split()&nbsp;k,mx=1,1&nbsp;for&nbsp;i&nbsp;in&nbsp;range(len(s)-1):&nbsp;if&nbsp;len(s[i])&lt;len(s[i+1]):&nbsp;k+=1&nbsp;elif&nbsp;len(s[i])==len(s[i+1]):&nbsp;if&nbsp;s[i]&lt;=s[i+1]:&nbsp;k+=1&nbsp;...
恭喜臭臭猴子:第二题用栈就行。合法的括号直接出栈了,剩下的是不合法的,肯定都得一个一个走。出入栈的过程中得记下进栈的括号的下标。最后栈里剩下的括号如果相邻两个的下标不连续,说明它们中间有一个合法的括号序列被出栈,结果加一
投递拼多多集团-PDD等公司10个岗位 > 拼多多求职进展汇总 笔试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务