查企企官方网站免费在线代理网页

web/2025/10/8 11:15:53/文章来源:
查企企官方网站,免费在线代理网页,神华公司两学一做网站,商城网站 价格作者推荐 视频算法专题 本文涉及知识点 数学 网格 状态压缩 LeetCode:782 变为棋盘 一个 n x n 的二维网络 board 仅由 0 和 1 组成 。每次移动#xff0c;你能任意交换两列或是两行的位置。 返回 将这个矩阵变为 “棋盘” 所需的最小移动次数 。如果不存在可行的变换你能任意交换两列或是两行的位置。 返回 将这个矩阵变为 “棋盘” 所需的最小移动次数 。如果不存在可行的变换输出 -1。 “棋盘” 是指任意一格的上下左右四个方向的值均与本身不同的矩阵。 示例 1: 输入: board [[0,1,1,0],[0,1,1,0],[1,0,0,1],[1,0,0,1]] 输出: 2 解释:一种可行的变换方式如下从左到右 第一次移动交换了第一列和第二列。 第二次移动交换了第二行和第三行。 示例 2: 输入: board [[0, 1], [1, 0]] 输出: 0 解释: 注意左上角的格值为0时也是合法的棋盘也是合法的棋盘. 示例 3: 输入: board [[1, 0], [1, 0]] 输出: -1 解释: 任意的变换都不能使这个输入变为合法的棋盘。 提示 n board.length n board[i].length 2 n 30 board[i][j] 将只包含 0或 1 数学 分两步 一调整列。 col0记录列首元素为0的列下标col1记录列首元素为1的列下标。 col0(col1)中的各列必须完全相同,col0和col1相同行的元素必须不同。 列调整后假定第一列是{i1,i2,i3,i4…} 则第二列是 i 1 ⊕ 1 , i 2 ⊕ 1 , i 3 ⊕ 1 , i 4 ⊕ 1 {i1\oplus 1,i2\oplus 1,i3\oplus 1,i4\oplus 1} i1⊕1,i2⊕1,i3⊕1,i4⊕1 ,第三列第五列 ⋯ \cdots ⋯和第一列相同第四列第六列 ⋯ \cdots ⋯ 和第二列相同。 c0的数量l0 n/2,c1的数量l1 n - l0。 列号从0开始,记录c0在各列在偶数列的数量d0,记录c1在各列在偶数列的数量d1。 如果n是奇数。 { 调整列次数为 d 0 , c 0 为调整后首列 l 0 l 1 1 调整列次数为 d 1 , c 1 为调整后首列 l 1 l 0 1 非法 o t h e r \begin{cases} 调整列次数为d0,c0为调整后首列 l0 l11 \\ 调整列次数为d1,c1为调整后首列 l1 l01 \\ 非法 other\\ \end{cases} ⎩ ⎨ ⎧​调整列次数为d0,c0为调整后首列调整列次数为d1,c1为调整后首列非法​l0l11l1l01other​ 如果n是偶数,调整的次数 min(d0,d1)c0和c1为首列不影响后续结果。 二调整行。 各列调整后各行一定是{0,1,0,1 ⋯ \cdots ⋯} 或 { 1,0,1,1 ⋯ \cdots ⋯}且数量相等。 调整后首列首元素的出现次数f0 ,必须等于 n - n/2。 行数从0开始。e0 为首第0个元素不在偶数行的数量e1为第1个元素不在偶数行的数量。 如果n是偶数调整行的次数min(n/2-e0,m/2-e1) 如果n是奇数调整行的次数f0 - e0。 代码 125行代码出错三次后才搞定。强烈不推荐细节太多。 核心代码 class Solution { public:int movesToChessboard(vectorvectorint board) {const int n board.size();vectorint col0, col1;for (int c 0; c n; c){if (board[0][c]){col1.emplace_back(c);}else{col0.emplace_back(c);}}for (int inx :col0){if (!SameCol(board, col0.front(), inx)){return -1;}}for (int inx : col1){if (!SameCol(board, col1.front(), inx)){return -1;}}if (abs((int)col0.size() - (int)col1.size()) 1 ){return -1;}for (int r 0; r n; r){if (1 ! board[r][col0.front()] board[r][col1.front()]){return -1;}}int d0 EvenCnt(col0);int d1 EvenCnt(col1);int iRet 0,e00,e10,f00;auto Tmp [](int col){e0 CntByValue(board, col, board[0][col], 2);e1 CntByValue(board, col, board[0][col] ^ 1, 2);f0 CntByValue(board, col, board[0][col], 1);};if (n 1){int iFirstCol 0;if (col0.size() col1.size() 1){iRet (n/21-d0);iFirstCol col0.front(); }else if (col1.size() col0.size() 1){iRet (n/21-d1); iFirstCol col1.front();}else{return -1;} Tmp(iFirstCol);if (f0 n / 2 1){iRet (n/21-e0);}else if (f0 n / 2){iRet (n/21-e1);}else{return -1;}}else { Tmp(0);if (f0 ! (n - n / 2)){return -1;}iRet min(n / 2 - d0, n / 2 - d1); iRet min(n / 2 - e0, n/2 - e1);}return iRet;}int EvenCnt(const vectorint indexs)const{int iRet 0;for (const auto inx : indexs){iRet (0 inx % 2);}return iRet;}bool SameCol(vectorvectorint board, int col1, int col2){for (int r 0; r board.size(); r){if (board[r][col1] ! board[r][col2]){return false;}}return true;}int CntByValue(vectorvectorint board, int col,int value ,int setp2){//指定值在偶数行的数量int iRet 0;for (int r 0; r board.size(); r setp){iRet (board[r][col] value);}return iRet;} };测试用例 templateclass T,class T2 void Assert(const T t1, const T2 t2) {assert(t1 t2); }templateclass T void Assert(const vectorT v1, const vectorT v2) {if (v1.size() ! v2.size()){assert(false);return;}for (int i 0; i v1.size(); i){Assert(v1[i], v2[i]);}}int main() {vectorvectorint board; {Solution sln;board { {1,1,1,0},{1,1,1,0},{0,0,0,1},{0,0,0,1} };auto res sln.movesToChessboard(board);Assert(-1, res);}{Solution sln;board { {1,1,1,1},{1,1,1,1},{0,0,0,0},{0,0,0,0} };auto res sln.movesToChessboard(board);Assert(-1, res);}{Solution sln;board { {1, 1, 0}, { 0,0,1 }, { 0,0,1 }};auto res sln.movesToChessboard(board);Assert(2, res);}{Solution sln;board { {0,1,1,0},{0,1,1,0},{1,0,0,1},{1,0,0,1} };auto res sln.movesToChessboard(board);Assert(2, res);}{Solution sln;board { {0, 1}, {1, 0} };auto res sln.movesToChessboard(board);Assert(0, res);}{Solution sln;board { {1, 0}, {1, 0} };auto res sln.movesToChessboard(board);Assert(-1, res);} }2023年4月版 用状态压缩可以大幅降低难道。 class Solution { public: int movesToChessboard(vectorvector board) { m_iN board.size(); const int iRowMask MaskRow(board[0]); const int iColMask MaskCol(board,0); int iForRevrver (1 m_iN) - 1; const int iRevRowMask iRowMask ^ iForRevrver; const int iRevColMask iColMask ^ iForRevrver; int iRowCnt 0, iColCnt 0; for (int i 0; i m_iN; i) { const int iCurRowMask MaskRow(board[i]); if ((iCurRowMask ! iRowMask) (iCurRowMask ! iRevRowMask)) { return -1; } iRowCnt (iCurRowMask iRowMask); const int iCurColMask MaskCol(board, i); if ((iCurColMask ! iColMask) (iCurColMask ! iRevColMask)) { return -1; } iColCnt (iCurColMask iColMask); } int iMoveRow GetMove(iRowMask, iRowCnt); int iMoveCol GetMove(iColMask, iColCnt); if ((-1 iMoveRow) || (-1 iMoveCol)) { return -1; } return iMoveRow iMoveCol; } int GetMove(int iMask, int iCnt) { const int iOneBitNum bitcount(iMask); if (m_iN 1) {//奇数 if (1 ! abs(m_iN - iCnt * 2)) { return -1; } if (1 ! abs(m_iN - iOneBitNum * 2)) { return -1; } if (iOneBitNum m_iN / 2) {//奇数位0偶数位为1 return m_iN / 2 - bitcount(iMask 0xAAAAAAAA); } else { return m_iN / 2 1 - bitcount(iMask 0x55555555); } } else { if (iCnt ! m_iN / 2) { return -1; } if (iOneBitNum ! m_iN / 2) { return -1; } //最低位编号为1次最低为编号为2… 奇数位为1需要移动的次数 int iMove1 m_iN / 2 - bitcount(iMask 0x55555555); //偶数为为1 int iMove2 m_iN / 2 - bitcount(iMask 0xAAAAAAAA); return min(iMove1, iMove2); } } int MaskRow(const vector vRow) { int iRet 0; for (int i 0; i m_iN; i) { if (vRow[i]) { iRet | (1 i); } } return iRet; } int MaskCol(const vectorvector board, int iCol) { int iRet 0; for (int i 0; i m_iN; i) { if (board[i][iCol]) { iRet | (1 i); } } return iRet; } int m_iN; }; 扩展阅读 视频课程 有效学习明确的目标 及时的反馈 拉伸区难度合适可以先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。 https://edu.csdn.net/course/detail/38771 如何你想快速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程 https://edu.csdn.net/lecturer/6176 相关 下载 想高屋建瓴的学习算法请下载《喜缺全书算法册》doc版 https://download.csdn.net/download/he_zhidan/88348653 我想对大家说的话闻缺陷则喜是一个美好的愿望早发现问题早修改问题给老板节约钱。子墨子言之事无终始无务多业。也就是我们常说的专业的人做专业的事。如果程序是一条龙那算法就是他的是睛 测试环境 操作系统win7 开发环境 VS2019 C17 或者 操作系统win10 开发环境 VS2022 **C 17** 如无特殊说明本算法用**C**实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89021.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简易的小企业网站建设政协网站建设要求

空间 样本空间 就是属性的所有可能情况,包括了一切可能出现或不可能出现的所有样本情况 版本空间&假设空间 假设空间就是在样本空间的基础上,给所有属性都加了一个通配符,表示任意即可;以及加上了一个空集,表示…

app与微网站的区别是什么意思电子商务网站建设初学视频教程

在做项目时&#xff0c;随着需求的不断增加&#xff0c;我们的代码文件会越来越大&#xff0c;但是在打包时&#xff0c;在 Node 中通过 JavaScript 使用内存的大小却是有限制的。于是&#xff0c;今天打算部署代码时&#xff0c;报错了: <--- JS stacktrace ---> JS st…

如何注册网站平台重庆网站建设重庆零臻科技行

简介 在网络通信编程中&#xff0c;用的最多的就是UDP和TCP通信了&#xff0c;原理这里就不分析了&#xff0c;网上介绍也很多&#xff0c;这里简单列举一下各自的优缺点和使用场景 通信方式优点缺点适用场景UDP及时性好&#xff0c;快速视网络情况&#xff0c;存在丢包 与嵌入…

上传的网站打不开怎么办如何用网页制作网站

网页中的音视频 <audio> 和 <vedio> 标签属性&#xff1a;autoplay 自动播放 controls 控制播放 loop 循环播放 表单 HTML 表单用于收集用户输入。 标签<form> 标签属性 action 数据的路径 enctype 传输文件 enctype"multipart/form-data" method …

开封网站seo工作中网页开发方案

目录 线程安全和重⼊问题 死锁和活锁 死锁 死锁四个必要条件 活锁 STL,智能指针和线程安全 线程安全的单例模式 饿汉模式 懒汉模式 懒汉模式实现单例模式(线程安全版本) 饿汉模式实现单例模式 我们来学习单例模式与线程安全 线程安全和重⼊问题 线程安全&#xff…

自己电脑上做的网站 怎么让别人看口碑好的五屏网站建设

在硅谷一线大厂所维护的系统服务中&#xff0c;我们经常可以看见SLA这样的承诺。 例如&#xff0c;在谷歌的云计算服务平台Google Cloud Platform中&#xff0c;他们会写着“99.9% Availability”这样的承诺。那什么是“99.9% Availability”呢&#xff1f; 要理解这个承诺是…

西部数码上传网站柳州网站虚拟主机销售价格

介绍 本篇Codelab我们将教会大家如何构建一个简易的OpenHarmony新闻客户端&#xff08;JS版本&#xff09;。应用包含两级页面&#xff0c;分别是主页面和详情页面&#xff0c;两个页面都展示了丰富的UI组件&#xff0c;其中详情页的实现逻辑中还展示了如何通过调用相应接口&a…

广州网站建设电话咨询wordpress最新版本

较为官方的概念&#xff1a; 当且仅当规格说明是存在的并且正确&#xff0c;程序与规格说明之间的 不匹配才是错误。 当需求规格说明书没有提到的功能&#xff0c;判断标准以最终用户为准&#xff1a;当程序没有实现其最终用户合理预期的 功能要求时&#xff0c;就是软…

房地产网站建设策划书北京公司电话大全黄页

低功耗技术 功耗构成静态功耗(漏电功耗)动态功耗翻转功耗(Switch Power)短路功耗(Internal Power) 不同类型的标准单元的功耗 低功耗设计方法降低芯片工作电压多阈值工艺方法电源门控&#xff08;Power Gating&#xff09;多电压域(Multi-Voltage Domain)体偏置门控时钟一个简单…

班级响应式网站html格式游戏开发物语破解版

一.题目要求 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 二.题目难度 简单 三.输入样例 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示…

清远市住房与城乡建设局的网站查网站加背景音乐

已知有三个数据库mysql,mongodb和redis&#xff0c;已经分别存储了不同的学生信息&#xff0c;数据全部采用字符串类型&#xff0c;只有id和name两个字段(在mongo和redis中键为id,值为name)&#xff0c;现需编写代码实现需求&#xff1a;根据指定id获取对应的name和存储该条信息…

网站商城建站app是程序员做出来的吗

1 问题 app,自定义消息通知的时候,在Android8.0手机上收不到通知 2 解决办法 NotificationManager需要创建NotificationChannel,然后调用createNotificationChannel把NotificationChannel传递进去,并且通过setChannelId设置相应的id 3 普通样本代码实现 private static fina…

站长工具综合查询ip情人做网站

在上传文件时&#xff0c;想使用setRequestMethod&#xff08;“GET”&#xff09;。结果无效 因为需要使用输出流上传文件&#xff0c;而使用输出流时&#xff0c;HttpURLConnection默认使用post请求。是无法更改的 conn.setDoOutput(true); //允许输出流 与 conn.setR…

计算机网络 网站开发与设计网站推广的方式

背景 闲鱼目前已经是国内最大的闲置物品交易平台&#xff0c;每天都有数以千万计的用户过来闲鱼&#xff0c;以C2C交易为主。在闲鱼里面&#xff0c;用户的C2C购物频率其实是很低的&#xff0c;而纯粹地逛商品feed流是一件挺无聊的事情。在业务上做加法&#xff0c;突破闲鱼用…

jsp网站开发pdf市场营销与网络营销

Linux的 /etc/hosts 文件用于静态地映射主机名到 IP 地址。 通常用于本地网络中的名称解析&#xff0c;它可以覆盖 DNS 的设置。当你访问一个域名时&#xff0c;系统会首先检查 /etc/hosts 文件&#xff0c;如果找到了匹配项&#xff0c;就会使用该 IP 地址&#xff0c;否则会…

进入城乡建设网站怎么竣工备案网站被攻击

1.Local Binary Pattern( LBP) 算法原理 局部二值模式(Local Binary Pattern, LBP)是一种用于描述图像纹理特征的算法。它通过对图像的每个像素点与其邻域像素进行比较,得到一个二进制编码来表示该像素点的纹理信息。 LBP 算法的基本步骤如下: 选择一个中心像素点,并定…

网站资源做外链邢台网站建设免费做网站排名

SPU(Standard Product Unit) 标准化产品单元 SPU是能够描述一个产品的单元&#xff0c;比如说&#xff0c;iPhone8就是一个SPU&#xff0c;与商家、颜色、款式、套餐无关。 SKU(Stock Keeping Unit) 库存量单元 SKU是用来定价和管理库存的&#xff0c;比如说&#xff0c;iPhon…

吉林省级建设行政主管部门政务网站wordpress设置404

在数字化的时代洪流中&#xff0c;开源与闭源的选择不断成为技术界的重要分水岭。随着特斯拉CEO埃隆马斯克的言论及其决策&#xff0c;公开支持开源&#xff0c;并糅合商业理念与技术革新&#xff0c;使得这场辩论再次成为公众关注的焦点。那么&#xff0c;在这场关乎技术发展脉…

郑州网站关键词优化公司wordpress文章添加标签居中

在本届「开源之夏 2024」活动中&#xff0c;MatrixOne开源社区共计上线3个项目任务&#xff0c;最终有 3位同学成功突围。接下来让我们看看每个项目的详细中选情况&#xff1a; 中选学生公示 项目名称&#xff1a;基于大语言模型的操作系统任务自动识别&#xff0c;拆解&#…

网站建设公司人员工资出国劳务信息网

前言 前面我们讲解了Java的基础语法以及面向对象的思想,相信大家已经基本掌握了Java的基本编程。在之前代码中,我们也看到代码写错了编译器会提示报错,或者编译器没有提示,但是运行的时候报错了,比如前面的数组查询下标超过数组的长度。所以在使用计算机语言进行项目开发的…