华为OD机试双机位C卷:黑白棋(C/C++/Java/Python/Go/JS)

华为OD机试双机位C卷:黑白棋(C/C++/Java/Python/Go/JS)

黑白棋

2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 200分题型

华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解

题目描述

有一个N×N的棋盘,由黑格子和白格子组成,棋子在棋盘上可以上下左右移动,只可以从黑色格走到相邻的白色,或者从白色格走到相邻的黑色: 你的任务是:对于给定的棋盘,询问从某一格开始的移动范围。

输入描述

第一行两个正整数,表示 n,m。

下面n行,每行n个字符,字符是1或0分别表示黑格子 和白格子,字符之间无空格。

接下来m行,每行两个数i,j,用空格隔开,表示棋盘 的第i行第j列的格子,需要计算该棋子从该格子的移动范围是多少格。

输出描述

m行,每行一个数表示每个询问的答案。

补充说明 对于全部的测试点,保证1≤n≤1000, 1≤m≤10000

用例1

输入

2 1 01 10 2 2 

Read more

LeetCode 141题:环形链表的艺术与科学

LeetCode 141题:环形链表的艺术与科学

🌟 LeetCode 141题:环形链表的艺术与科学 * 🌀 环形链表:当数据开始循环舞蹈 * 🔍 解法一:哈希表法 - 记忆的艺术 * 解题思路 * 性能分析 * 🏃‍♂️ 解法二:快慢指针法 - 龟兔赛跑的智慧 * 解题思路 * 性能优势 * 💻 代码实现与调试心得 * 🌈 思维与实现的分离 * 🎯 总结 因为想更好地为义父义母大佬服务,本文 Bilibili 视频地址 🌀 环形链表:当数据开始循环舞蹈 在计算机科学的世界里,链表是一种优雅而基础的数据结构。正常链表如同一条笔直的小路,从起点(head)出发,每个节点指向下一个节点,最终以空指针(nullptr)作为终点,标志着旅程的结束。 Head Node1 Node2 Node3 nullptr 然而,环形链表则打破了这种线性规则,它更像是一个神秘的莫比乌斯环,没有真正的终点。链表的某个节点不再指向空,而是指向链表中已经存在的另一个节点,形成了一个无尽的循环。 Head

By Ne0inhk
详解数据结构之跳表

详解数据结构之跳表

目录 跳表的定义 跳表的演化过程 跳表的优化思路 跳表如何保证效率 跳表的时间复杂度 跳表的空间复杂度 跳表的查找 跳表的插入 跳表的删除 跳表的模拟实现 跳表与平衡搜索树及哈希表的对比 跳表的定义 跳表是由William Pugh(音译为威廉·普)发明的,最早出现于他在1990年发表的论文《Skip Lists: A Probabilistic Alternative to Balanced Trees》,跳表全称为跳跃列表,它允许快速查询,插入和删除一个有序连续元素的数据链表。 跳表的演化过程 对于单链表来说,即使数据是已经排好序的,想要查询其中的一个数据,只能从头开始遍历链表,这样效率很低,时间复杂度很高,是 O(n),如下图所示。 那我们有没有什么办法来提高查询的效率呢?我们可以为链表建立一个“索引”,这样查找起来就会更快,如下图所示,我们在原始链表的基础上,每两个结点提取一个结点建立索引,我们把抽取出来的结点叫作索引层或者索引,down

By Ne0inhk
背包dp——动态规划

背包dp——动态规划

文章目录 * 一、0-1背包 * 二、完全背包 * 三、二维费用背包 * 四、似包非包 背包dp,全称是背包类动态规划,是动态规划问题中非常经典的一类问题。它的基本模型来源于一个非常形象的场景——一个容量有限的背包,和一组物品。每个物品都有自己的重量(或体积)和价值。目标是选择一些物品装入背包,使得在不超过背包总容量的前提下,装入背包的物品的总价值最大。 这个看似简单的模型,却可以衍生出许多变种,广泛应用于资源分配、投资决策、项目选择等现实问题中。 根据物品的特点,背包问题还可以进一步细分。如果每种物品只有一个,可以选择将之放入或不放入背包,那么可以将这类问题称为0-1背包问题。0-1背包问题是最基本的背包问题,其他背包问题通常可以转化为0-1背包问题。 如果第 i i i种物品最多有 M i M_i Mi 个( M i ≥ 1 M_i\geq1 Mi

By Ne0inhk
【数据结构与算法】指针美学与链表思维:单链表核心操作全实现与深度精讲

【数据结构与算法】指针美学与链表思维:单链表核心操作全实现与深度精讲

🔥小龙报:个人主页 🎬作者简介:C++研发,嵌入式,机器人等方向学习者 ❄️个人专栏:《C语言》《【初阶】数据结构与算法》 ✨ 永远相信美好的事情即将发生 文章目录 * 前言 * 一、查找 * 二、指定位置之前或之后插入元素 * 2.1 在指定位置之前 * 2.2 在指定位置之后 * 三、指定位置删除或指定位置之后删除 * 3.1 在指定位置 * 3.2 指定位置之后 * 四、代码展现 * 4.1 SList.h * 4.2 SList.c * 4.3 test.c * 五、顺序表和链表的区别 * 总结与每日励志 前言

By Ne0inhk