C++练手题

第 1 题 【 问答题 】

• 红与黑

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

时间限制: 1000

内存限制: 65536

输入

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

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

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

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

输出

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

样例输入

6 9

...#.

...#

...

...

...

...

...

#@...#

.#...#.

0 0

样例输出

45

第 2 题 【 问答题 】

• 迷宫问题

定义一个二维数组:

int maze[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,

};

它表示一个迷宫, 其中的 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

相关推荐
FL16238631291 分钟前
[C++]使用纯opencv部署yolov11-pose姿态估计onnx模型
c++·opencv·yolo
sukalot5 分钟前
windows C++-使用任务和 XML HTTP 请求进行连接(一)
c++·windows
一休哥助手7 分钟前
Redis 五种数据类型及底层数据结构详解
数据结构·数据库·redis
这可就有点麻烦了8 分钟前
强化学习笔记之【TD3算法】
linux·笔记·算法·机器学习
苏宸啊14 分钟前
顺序表及其代码实现
数据结构·算法
lin zaixi()17 分钟前
贪心思想之——最大子段和问题
数据结构·算法
FindYou.17 分钟前
C - Separated Lunch
算法·深度优先
ぃ扶摇ぅ22 分钟前
Windows系统编程(三)进程与线程二
c++·windows
夜雨翦春韭23 分钟前
【代码随想录Day30】贪心算法Part04
java·数据结构·算法·leetcode·贪心算法
Kent_J_Truman35 分钟前
【平方差 / C】
算法