第八届蓝桥杯——贪吃蛇长度

【问题描述】

小明在爷爷的私人收藏馆里找到一台老式电脑。居然没有图形界面,只能用控制台编程。
经过小明的一阵摸索,神奇地设计出了控制台上的贪食蛇游戏。
如下图,是游戏时画面截图。
其中,H表示蛇头,T表示蛇尾。#表示蛇的身体,@表示身体交叉重叠的地方。
你能说出现在的贪吃蛇长度是多少吗?
其实,只要数出#的数目算1,数出@的数目,算2,再加上头尾各算1就计算好了。
人工数一下?太累眼睛了,聪明的你为什么不让计算机帮忙呢?
本题的要求就是: 请填写上图中贪食蛇的长度是多少?

+-------------------------------------------------+
|                                                 |
|    H######                      ####            |
|          #                      #  #            |
|          #                      #  #            |
|          #     ####             #  #            |
|          #     #  #             #  #            |
|          ######@###             #  #            |
|                #       ####     #  #            |
|                #       #  #     #  #            |
|            ####@#######@###     #  #            |
|            #   #       #        #  #            |
| T          #####       #        #  #   ##       |
| #                      #      ###  ### ##       |
| ################       #      #      ####       |
|                #       #      #         #       |
|   ##############       #######@##########       |
|   #                         ###                 |
|   ###########################                   |
+-------------------------------------------------+

【答案提交】
注意:需要提交的是一个整数,不要添加任何多余内容(比如说明或注释)


疑惑:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;

char a[20][52];

int main()
{
	for (int i = 0; i < 20; i ++) cin >> a[i];
	
	int ans = 0;
	for (int i = 0; i < 20; i ++)
	    for (int j = 0 ; j < 52; j ++)
	    {
		    if(a[i][j] == '#') ans ++;
		    else if(a[i][j] == '@') ans += 2;
	    }
	
	cout << ans + 2 << endl;
	return 0;
}

在这里插入图片描述

我也不知道为什么开到116才能算出正确答案:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;

char a[116][52];

int main()
{
	for (int i = 0; i < 116; i ++) cin >> a[i];
	
	int ans = 0;
	for (int i = 0; i < 116; i ++)
	    for (int j = 0 ; j < 52; j ++)
	    {
		    if(a[i][j] == '#') ans ++;
		    else if(a[i][j] == '@') ans += 2;
	    }
	
	cout << ans + 2 << endl;
	return 0;
}
/*
+-------------------------------------------------+
|                                                 |
|    H######                      ####            | 11
|          #                      #  #            | 3
|          #                      #  #            | 3
|          #     ####             #  #            | 7
|          #     #  #             #  #            | 5
|          ######@###             #  #            | 13
|                #       ####     #  #            | 7
|                #       #  #     #  #            | 5
|            ####@#######@###     #  #            | 20
|            #   #       #        #  #            | 5
| T          #####       #        #  #   ##       | 11
| #                      #      ###  ### ##       | 10
| ################       #      #      ####       | 22
|                #       #      #         #       | 4
|   ##############       #######@##########       | 33
|   #                         ###                 | 4
|   ###########################                   | 27
+-------------------------------------------------+
*/

答案:190

求大佬帮帮我 o(╥﹏╥)o

发布了64 篇原创文章 · 获赞 5 · 访问量 831

猜你喜欢

转载自blog.csdn.net/weixin_46239370/article/details/105508942