C++练手题

第 1 题 【 问答题 】

• 红与黑

有一间长方形的房子, 地上铺了红色、 黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上, 只能向相邻的黑色瓷砖移动。 请写一个程序, 计算你总共能够到达多少块黑色的瓷砖。

时间限制: 1000

内存限制: 65536

输入

包括多个数据集合。 每个数据集合的第一行是两个整数 W 和 H, 分别表示 x 方向和 y 方向瓷砖的数量。 W 和 H 都不超过 20。 在接下来的 H 行中, 每行包括 W 个字符。 每个字符表示一块瓷砖的颜色, 规则如下

1)'.': 黑色的瓷砖;

2)'#': 白色的瓷砖;

3)'@': 黑色的瓷砖, 并且你站在这块瓷砖上。 该字符在每个数据集合中唯一出现一次。 当在一行中读入的是两个零时, 表示输入结束。

输出

对每个数据集合, 分别输出一行, 显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。

样例输入

6 9

...#.

...#

...

...

...

...

...

#@...#

.#...#.

0 0

样例输出

45

第 2 题 【 问答题 】

• 迷宫问题

定义一个二维数组:

int maze55 = {

0, 1, 0, 0, 0,

0, 1, 0, 1, 0,

0, 0, 0, 0, 0,

0, 1, 1, 1, 0,

0, 0, 0, 1, 0,

};

它表示一个迷宫, 其中的 1 表示墙壁, 0 表示可以走的路, 只能横着走或竖着走, 不能斜着走, 要求编程序找出从左上角到右下角的最短路线。

时间限制: 1000

内存限制: 65536

输入

一个 5 × 5 的二维数组, 表示一个迷宫。 数据保证有唯一解。

输出

左上角到右下角的最短路径, 格式如样例所示。

样例输入

0 1 0 0 0

0 1 0 1 0

0 0 0 0 0

0 1 1 1 0

0 0 0 1 0

样例输出

(0, 0)

(1, 0)

(2, 0)

(2, 1)

(2, 2)

(2, 3)

(2, 4)

(3, 4)

(4, 4)

•

第 3 题 【 问答题 】

• 二叉树的深度

给定一棵二叉树, 求该二叉树的深度

二叉树深度定义: 从根结点到叶结点依次经过的结点(含根、叶结点)

形成树的一条路径, 最长路径的节点个数为树的深度

时间限制: 1000

内存限制: 65535

输入

第一行是一个整数 n, 表示二叉树的结点个数。 二叉树结点编号从 1到 n, 根结点为 1, n <= 10 接下来有 n 行, 依次对应二叉树的 n 个节点。 每行有两个整数, 分别表示该节点的左儿子和右儿子的节点编号。 如果第一个(第二个) 数为-1 则表示没有左(右) 儿子

输出

输出一个整型数, 表示树的深度

样例输入

3

2 3

-1 -1

-1 -1

样例输出

2

•

第 4 题 【 问答题 】

• 表达式· 表达式树· 表达式求值

众所周知, 任何一个表达式, 都可以用一棵表达式树来表示。 例如,

表达式 a+b*c, 可以表示为如下的表达式树:

/

a *

/

b c

现在, 给你一个中缀表达式, 这个中缀表达式用变量来表示(不含数字), 请你将这个中缀表达式用表达式二叉树的形式输出出来。

时间限制: 1000

内存限制: 65535

输入

输入分为三个部分。 第一部分为一行, 即中缀表达式(长度不大于 50)。

中缀表达式可能含有小写字母代表变量(a-z), 也可能含有运算符(+、-、 *、 /、 小括号), 不含有数字, 也不含有空格。 第二部分为一个整数 n(n < 10), 表示中缀表达式的变量数。 第三部分有 n 行, 每行格式为 C x, C 为变量的字符, x 为该变量的值。

输出

输出分为三个部分, 第一个部分为该表达式的逆波兰式, 即该表达式树的后根遍历结果。 占一行。 第二部分为表达式树的显示, 如样例输出所示。 如果该二叉树是一棵满二叉树, 则最底部的叶子结点, 分别占据横坐标的第 1、 3、 5、 7......个位置(最左边的坐标是 1), 然后它们的父结点的横坐标, 在两个子结点的中间。 如果不是满二叉树,则没有结点的地方, 用空格填充(但请略去所有的行末空格)。 每一行父结点与子结点中隔开一行, 用斜杠(/) 与反斜杠() 来表示树的关系。 /出现的横坐标位置为父结点的横坐标偏左一格, \出现的横坐标位置为父结点的横坐标偏右一格。 也就是说, 如果树高为 m, 则输出就有 2m-1 行。 第三部分为一个整数, 表示将值代入变量之后,该中缀表达式的值。 需要注意的一点是, 除法代表整除运算, 即舍弃小数点后的部分。 同时, 测试数据保证不会出现除以 0 的现象。

样例输入

a+bc
3
a 2
b 7
c 5
样例输出
abc
+

/

a *

/

b c

37

•

相关推荐
2601_960356381 小时前
2027校招采购岗解析:数学基础如何迁移到需求预测、成本与供应商分析
人工智能·算法
h_a_o777oah1 小时前
【树论】树链剖分:将树形结构转化为线性结构以处理树上路径问题(洛谷 P3384 附C++代码模板)
数据结构·算法·线段树·acm·树链剖分·树论·重链剖分
HEJOO91 小时前
指针的算术运算详解
java·数据结构·算法
Coder-magician1 小时前
《代码随想录》刷题打卡day47:并查集-part01
数据结构·算法·图论
垆边人似月.2 小时前
VLAN 资源池(100~200 分档)
数据结构·算法
潼心1412o2 小时前
C++初阶(长期更新)第6讲:类和对象(下)
开发语言·c++·算法
星光开发者3 小时前
基于决策树随机森林算法的小说推荐系统的设计与实现-计算机毕设【课程设计】78485
vue.js·算法·微信小程序·django·php·课程设计·express
-森屿安年-3 小时前
按身高排序
c++·算法
程序员清风3 小时前
算法与数据结构入门:复杂度、数组与链表
数据结构·算法·链表
无定义_3 小时前
Codeforces Round 1124 (Div. 2)
算法