数独

面试必备:高频算法题终章「图文解析 + 范例代码」之 矩阵 二进制 + 位运算 + LRU 合集

ε祈祈猫儿з 提交于 2019-12-01 20:10:26
Attention 秋招接近尾声,我总结了 牛客 、 WanAndroid 上,有关笔试面经的帖子中出现的算法题,结合往年考题写了这一系列文章,所有文章均与 LeetCode 进行核对、测试。欢迎食用 本文将覆盖 「二进制」 + 「位运算」 和 Lru 方面的面试算法题,文中我将给出: 面试中的题目 解题的思路 特定问题的技巧和注意事项 考察的知识点及其概念 详细的代码和 解析 开始之前,我们先看下会有哪些重点案例: 为了方便大家跟进学习,我在 GitHub 建立了一个仓库 仓库地址: 超级干货!精心归纳 视频、归类、总结 ,各位路过的老铁支持一下!给个 Star ! 现在就让我们开始吧! 矩阵 螺旋矩阵 给定一个包含 m x n 个要素的矩阵,( m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素。 示例 : 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出: [1,2,3,4,8,12,11,10,9,5,6,7] 解题思路 我们定义矩阵的第 k 层是到最近边界距离为 k 的所有顶点。例如,下图矩阵最外层元素都是 第 1 层 ,次外层元素都是 第 2 层 ,然后是 第 3 层 的。 [[1, 1, 1, 1, 1, 1, 1], [1, 2, 2, 2, 2, 2, 1], [1, 2, 3, 3, 3, 2, 1],

搜索 靶型数独 1074

北战南征 提交于 2019-12-01 08:33:00
题目链接 题目叫靶型数独,洛谷题号1074; 题目描述:要求在9*9宫格内填满数,分好的每个3*3宫格1到9数字不能重复,每行每列数字不能重复。 思想:dfs搜索。 我一开始想的是从头开始搜,每到一个格子,搜当前行当前列当前块块,把不能用的数标记。可是我没想到怎么同时维护当前行列坐标信息和选了哪一个(当然现在想到了),到最后到最后一个0时计算所有数值答案。反正思路极其混乱,然后看了有位叫做别人的大佬的代码深深折服,很清晰简略。当然这都是后话。 还是讲讲思路吧。 规定每个块,每行每列的编号,hang[i][j],lie[i][j],gong[i][j]==1表示i这个行/列/块的j数值已经有数存在了。 cnt表示0的标号,s数组记录每个0的行、列、块、价值信息方便用。 dfs函数写的非常简单。have提前计算已有价值。 其中算得上剪枝的是把每行0从小到大搜索,因为dfs是树形结构,深度小的越少搜索的数量越少。 找每个点的权值时利用了如果是第一层就会在第二层之前return,因此不用因为形如(2,1)这类点写一堆特判。 值得一提的是我最后忘了特判-1了,一直95分,非常的智障。 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; long

验证数独 Valid Sudoku

北慕城南 提交于 2019-12-01 05:18:36
问题:Determine if a Sudoku is valid, according to: Here are three rules: Each row must have the numbers 1-9 occuring just once. Each column must have the numbers 1-9 occuring just once. And the numbers 1-9 must occur just once in each of the 9 sub-boxes of the grid. The Sudoku board could be partially filled, where empty cells are filled with the character '.' . A partially filled sudoku which is valid. Note: A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated. 解决: ① 本题是验证一个数独(不一定是完整的,空白的元素用"."来代替)是否是正确的。 九宫格的规则为: 每一行只能出现1~9一次; 每一列只能出现1

软工实践——第三次作业数独测试总结

耗尽温柔 提交于 2019-11-30 18:41:55
软工实践——第三次作业数独测试总结 1、测试流程图 2、测试状态分析 程序的状态枚举https://github.com/numb-men/software_test/blob/master/src/main/java/cn/hengyumo/SoftwareTestStatus.java 程序的日志https://github.com/numb-men/software_test/blob/master/log.json 1、预备动作可能出现的状态日志 // 没在共享文档填写仓库地址,按照老师预先声明的软工实践记分规则视为作业没交/-18.0 EMPTY_GITHUB_REPO("空,未填github仓库地址"), // 仓库地址不符合规范 http://github.com/xxxx/xxxx // (这一错误我能改的都帮着改了) BAD_GITHUB_REPO_URL("不合法的github仓库形式"), // 进行下载 WAIT_TO_DOWNLOAD("链接无误,等待下载"), 2、下载解压动作可能会出现的状态日志 // 下载成功,部分同学没有按照作业要求忽略仓库的无用文件, // 导致仓库好几十MB,有两位同学一个四十几MB,一个六十几MB... // 实际上只上传源代码,应该就只有几KB。 // 进入解压 DOWNLOAD_SUCCEED("下载成功"), //

数独

旧城冷巷雨未停 提交于 2019-11-30 17:07:30
数独(shù dú)是源自18世纪瑞士的一种数学游戏。是一种运用纸、笔进行演算的 逻辑游戏 。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复 [1] 。 数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。 来源: https://www.cnblogs.com/chenglaiyong/p/11605655.html

bugku 很普通的数独

懵懂的女人 提交于 2019-11-30 12:31:55
下载下是一个没有后缀的文件,使用winhex打开,头文件为50 4b 03 为zip文件,修改后缀,打开压缩包,是一大堆数独图片。 仔细看了好久,发现这几张图片像二维码,而且1 5 21这三张图的位置错了,修改之后,发现就是个二维码,用记事本将信息记录下来,有数字的用1代替,没有的用零代替。 111111101010101000101000001111110000101111111 100000101100111101010011101100011001001000001 101110101110011111010011111101000101001011101 101110101101100010001010000011110001101011101 101110100011100100001111101111111011101011101 100000101100100000011000100001110100001000001 111111101010101010101010101010101011101111111 000000000011001101001000110100110011100000000 110011100100100001111111100100101000000101111

软件工程第三次作业---数独

≡放荡痞女 提交于 2019-11-30 11:29:10
软件工程第三次作业---数独 一. GitHub地址 二.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) Planning 计划 60 Estimate 估计这个任务需要多少时间 2100 Development 开发 2100 Analysis 需求分析(包括学新技术) 480 Design Spec 生成设计文档 30 Design Review 设计复审 30 Coding Standard 代码规范(为目前的开发指定合适的规范) 30 Design 具体设计 60 Coding 具体编码 900 Code Review 代码复审 30 Test 测试(自我测试,修改代码,提交修改) 120 Reporting 报告 240 Test Repor 测试报告 120 Size Measurement 计算工作量 30 Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 240 合计 2100 三.解题思路 拿到这道题,首先想到的是我长到这么大竟然没有做过一张数独?(小羞耻。。)那么我首先要做的一步就是了解数独规则。 1.了解规则 百度百科简介: 数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理

软件工程实践2019第三次作业

牧云@^-^@ 提交于 2019-11-30 11:27:44
1.Github项目地址 : https://github.com/DFHG10/031702429 2.PSP表格 PSP是卡耐基梅隆大学(CMU)的专家们针对软件工程师所提出的一套模型:Personal Software Process (PSP, 个人开发流程,或称个体软件过程)。 PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时) Planning 计划 1h 0.5h Estimate 估计这个任务需要多少时间 28h 26h Development 开发 4h 2h Analysis 需求分析 (包括学习新技术) 4.5h 5h Design Spec 生成设计文档 2h 2h Design Review 设计复审 2h 1h Coding Standard 代码规范 (为目前的开发制定合适的规范) 1h 0.5h Design 具体设计 2h 1h Coding 具体编码 6h 8h Code Review 代码复审 1.5h 1h Test 测试(自我测试,修改代码,提交修改) 0.5h 1h Reporting 报告 1.5h 2h Test Repor 测试报告 0.5h 0.5h Size Measurement 计算工作量 0.5h 0.5h Postmortem & Process

软工2019作业三

℡╲_俬逩灬. 提交于 2019-11-30 11:26:17
吉哈地址: >>>https://github.com/DreamFeather/031702113<<< PSP表格: PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 15 15 Estimate 估计这个任务需要多少时间 15 15 Development 开发 320 660 Analysis 需求分析 (包括学习新技术) 20 120 Design Spec 生成设计文档 0 0 Design Review 设计复审 30 0 Coding Standard 代码规范 (为目前的开发制定合适的规范) 0 0 Design 具体设计 20 120 Coding 具体编码 120 150 Code Review 代码复审 10 30 Test 测试(自我测试,修改代码,提交修改) 120 240 Reporting 报告 160 270 Test Report 测试报告 20 120 Size Measurement 计算工作量 20 120 Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 120 30 合计 495 945 解题思路 看到题目是数独的时候,我大脑里第一反应是,游戏,数学家没事时玩的,一张的纸,一支铅笔,擦擦写写

软工第三次个人编程作业攻略

隐身守侯 提交于 2019-11-30 06:35:02
代码地址: Github : https://github.com/O-VIGIA/031702414 PSP表格: PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时) Planning 计划 1h 0.5 Estimate 估计这个任务需要多少时间 25h 26h Development 开发 5h 1h Analysis 需求分析 (包括学习新技术) 1h 1h Design Spec 生成设计文档 1h 1h Design Review 设计复审 1h 0.5h Coding Standard 代码规范 (为目前的开发制定合适的规范) 1h 0.5h Design 具体设计 1.5h 0.5h Coding 具体编码 5h 5h Code Review 代码复审 1h 0.5h Test 测试(自我测试,修改代码,提交修改) 1.5h 1h Reporting 报告 2.5h 3h Test Repor 测试报告 0.5h 1h Size Measurement 计算工作量 0.5h 0.5h Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 2.5h 3h 合计 25h 19h 编写历程: 第一阶段: 作业发布的第二天才看到竟然又有作业了