-
-
-
-
#include
#include
#define SIZE 100
int n, m, p, count;
int a[SIZE][SIZE];
void colour(int x, int y) {
count++;
a[x][y] = 1;
if ((x > 1) && (a[x - 1][y] == 0))
colour(x - 1, y);
if ((y > 1) && (a[x][y - 1] == 0))
colour(x, y - 1);
if ((x < n) && (a[x + 1][y] == 0))
colour(x + 1, y);
if ((y < m) && (a[x][y + 1] == 0))
colour(x, y + 1);
}
int main( ) {
int i, j, x, y, ans;
memset(a, 0, sizeof(a));
scanf("%d%d%d", &n, &m, &p);
...
阅读题目
填空题
经典指数
-
-
-
(序列重排)全局数组变量 a 定义如下:
const int SIZE = 100;
int a[SIZE], n;
它记录着一个长度为 n 的序列 a[1], a[2], ..., a[n]。
现在需要一个函数,以整数 p (1 ≤ p ≤ n)为参数,实现如下功能:将序列 a 的前 p
个数与后 n – p 个数对调,且不改变这 p 个数(或 n – p 个数)之间的相对位置。例如,
长度为 5 的序列 1, 2, 3, 4, 5,当 p = 2 时重排结果为 3, 4, 5, 1, 2。
有一种朴素的算法可以实现这一需求,其时间复杂度为 O(n)、空间复杂度为 O(n):
void swap1(int p) { int i, j, b[SIZE];
for (i = 1; i ...
阅读题目
填空题
经典指数
-
(二叉查找树)二叉查找树具有如下性质:每个节点的值都大于其左子树上所有节点的 值、小于其右子树上所有节点的值。试判断一棵树是否为二叉查找树。 输入的第一行包含一个整数 n,表示这棵树有 n 个顶点,编号分别为 1, 2, ..., n,其 中编号为 1 的为根结点。之后的第 i 行有三个数 value, left_child, right_child,分别表示 该节点关键字的值、左子节点的编号、右子节点的编号;如果不存在左子节点或右子节 点,则用 0 代替。输出 1 表示这棵树是二叉查找树,输出 0 则表示不是。 #include using namespace std;
const int SIZE = 100;
const int INFINITE = 1000000;
struct node {
int left_child, right_child, value;
};
node a[SIZE];
int is_bst(int root, int lower_bound, int upper_bound) {
int cur;
if (root = ...
阅读题目
填空题
经典指数
-
-
扫描后移动端查看
相关标签
同类标签
|
微信公众号
|
|
欢迎加入,一起群聊
|