Matlab和python详解数独谜题问题

🔗 运行环境:Matlab、Python

🚩 撰写作者:左手の明天

🥇 精选专栏:《python》

🔥  推荐专栏:《算法研究》

🔐#### 防伪水印——左手の明天 ####🔐

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天分享算法——数独谜题问题💗

📆  最近更新:2023 年 12 月 04 日,左手の明天的第 299 篇原创博客

📚 更新于专栏:matlab

🔐#### 防伪水印——左手の明天 ####🔐


目录

一、数独谜题

二、整数规划求解数独

1.1 理解问题

1.2 建立数学模型

1.3 定义变量和约束条件

1.4 使用整数规划求解

三、决策变量的取值

四、MATLAB整数规划求解数独问题

五、MATLAB回溯法求解数独问题

六、Python求解数独问题

七、提高数独求解程序的效率

八、优化算法提高数独求解效率措施

回溯法的优化:

数对法和唯余法的优化:

并行计算:

机器学习算法的应用:

代码优化:

预处理和后处理:

算法集成:

动态规划的应用:

数学定理的应用:

人工智能技术的应用:


一、数独谜题

数独是一种流行的逻辑推理游戏,玩家需要将数字填入一个9x9的网格,使得每行、每列和每个3x3的子网格中都包含1-9的数字,且每个数字只出现一次。数独谜题的目标是填充缺失的数字,使得满足上述条件。整数规划是一种求解数学问题的方法,可以将数独问题转化为整数规划问题,从而通过数学模型求解。

第一行 B(1,2,2) 表示第 1 行第 2 列的整数提示为 2。第二行 B(1,5,3) 表示第 1 行第 5 列的整数提示为 3。以下是整个矩阵 B

B = [1,2,2;1,5,3;1,8,4;2,1,6;2,9,3;3,3,4;3,7,5;4,4,8;4,6,6;5,1,8;5,5,1;5,9,6;6,4,7;6,6,5;7,3,7;7,7,6;8,1,4;8,9,8;9,2,3;9,5,4;9,8,2];drawSudoku(B) % For the listing of this program, see the end of this example.


二、整数规划求解数独

整数规划求解数独问题是一个复杂而有趣的领域,需要理解问题的本质,定义合适的变量,建立数学模型,并使用有效的求解方法进行求解。以下是求解数独谜题的步骤:

1.1 理解问题

数独是一种基于逻辑的填数字游戏,目的是在9x9的网格中填充数字1-9,使得每行、每列和每个3x3的子网格中都包含1-9的数字,且每个数字只出现一次。数独谜题通常由一组已填充的数字和一组空白格子组成,我们需要通过推理和逻辑判断来填充缺失的数字。

1.2 建立数学模型

整数规划的基本形式是:最小化一个线性函数(目标函数),使得一组线性不等式(约束条件)成立,且某些决策变量取整数值。在数独问题中,可以将每个数字看作一个决策变量,如果某个数字在某个位置上非负,则该变量的取值为1,否则为0。同时,可以定义一组线性不等式来描述数独的约束条件。

1.3 定义变量和约束条件

假设X是一个9x9的矩阵,其中X[i][j]表示第i行第j列的数字。定义变量x[i][j],如果X[i][j]非负,则x[i][j]=1,否则x[i][j]=0。同时,定义变量y[i][j]表示第i行第j列的格子是否已经被填入数字(如果填入数字则y[i][j]=1,否则y[i][j]=0)。另外,定义z[i][j][k]表示第i行第j列的格子是否被填入数字k(如果填入数字k则z[i][j][k]=1,否则z[i][j][k]=0)。在这个模型中,我们需要在所有y[i][j]=0的位置填入合适的数字,使得所有z[i][j][k]=1的位置都满足k=1-9。

约束条件包括:

  • 所有z[i][j][k]的总和等于1(每个格子只能填入一个数字)
  • 所有z[i][j][1-9]的总和等于X[i][j](每个格子填入的数字等于其左上角标出的数字)
  • 所有z[i][j][k]的总和小于等于y[i][j](每个格子填入的数字只能是整数)
  • 所有y[i][j]的总和小于等于80(每行最多只能填入8个数字)
  • 所有y[i][j]的总和等于81(每行必须填入9个数字)
  • 所有X[i][j]的总和等于81(每行必须填入9个数字)
  • 所有X[i][j]的总小于等于80(每行最多只能填入8个数字)

目标函数:最小化所有决策变量的和,即最小化所有填充数字的数量。 约束条件:每行、每列和每个3x3的子网格中都包含1-9的数字,且每个数字只出现一次。这可以通过以下不等式表示:

z[i][j][k] + z[i][j][k'] <= 1, 对于所有i, j, k, k'

z[i][j][k] + z[i][j][k'] <= 1, 对于所有i, j, k, k'

z[i][j][k] + z[i-1][j][k'] <= 1, 对于所有i, j, k, k'

z[i][j][k] + z[i+1][j][k'] <= 1, 对于所有i, j, k, k'

z[i][j][k] + z[i][j-1][k'] <= 1, 对于所有i, j, k, k'

z[i][j][k] + z[i][j+1][k'] <= 1, 对于所有i, j, k, k'

z[i][j][k] + z[i-1][j-1][k'] <= 1, 对于所有i, j, k, k'

z[i][j][k] + z[i-1][j+1][k'] <= 1, 对于所有i, j, k, k'

z[i][j][k] + z[i+1][j-1][k'] <= 1, 对于所有i, j, k, k'

z[i][j][k] + z[i+1][j+1][k'] <= 1, 对于所有i, j, k, k'

其中,z[i][j][k]表示第i行第j列填入数字k的格子的决策变量。以上不等式表示每个格子只能填入一个数字,且每个数字只能填入一次。 决策变量:对于每个数字1-9,我们定义一个决策变量z[i][j][k],表示第i行第j列填入数字k的格子的决策变量。决策变量的取值为0或1。

1.4 使用整数规划求解

使用整数规划求解数独问题可以通过以下步骤实现:

(1)初始化决策变量:将所有决策变量初始化为0。

(2)设置目标函数:将目标函数设置为所有决策变量的和,即最小化填充数字的数量。

(3)添加约束条件:将上述建立的约束条件添加到模型中。

(4)使用整数规划求解器进行求解:使用常见的整数规划求解器(如CPLEX、Gurobi等)进行求解。在求解过程中,需要将数独问题转化为标准的整数规划问题,并使用合适的求解算法进行求解。

(5)解码和解谜:在得到解后,需要将解解码成对应的数独答案,并进行验证和解谜。解码的过程需要将决策变量转换为具体的数字填充结果,并检查是否满足数独的规则和要求。如果得到的结果符合要求,则解谜成功;否则需要进行进一步的推理和判断。


三、决策变量的取值

在整数规划求解数独问题时,决策变量的取值确定是通过以下步骤实现的:

  1. 初始化决策变量:将所有决策变量初始化为0,表示初始状态下所有格子都是空的。
  2. 填充决策变量:通过推理和逻辑判断,确定每个格子的数字填充结果,即决策变量的取值。在填充决策变量时,需要满足数独的规则和要求,即每行、每列和每个3x3的子网格中都包含1-9的数字,且每个数字只出现一次。
  3. 验证和解码:在得到解后,需要将解解码成对应的数独答案,并进行验证和解谜。解码的过程需要将决策变量转换为具体的数字填充结果,并检查是否满足数独的规则和要求。如果得到的结果符合要求,则解谜成功;否则需要进行进一步的推理和判断。

需要注意的是,整数规划求解数独问题时,得到的解可能不是唯一的,因此需要进行充分的验证和解码,以得到所有符合要求的解。同时,整数规划求解数独问题的方法也有一定的局限性,可能存在某些特殊情况无法通过此方法得到解。


四、MATLAB整数规划求解数独问题

以下是一个使用MATLAB整数规划求解数独问题的示例代码:

% 创建数独矩阵
X = zeros(9,9); % 初始为全零矩阵
% 填充已知数字
X(1,5) = 1; X(2,3) = 2; X(2,4) = 4; X(3,1) = 3; X(3,2) = 5; X(3,6) = 6; X(4,1) = 7; X(4,2) = 8; X(4,3) = 9;
X(5,4) = 7; X(6,2) = 6; X(6,3) = 8; X(7,1) = 5; X(7,2) = 9; X(7,4) = 4; X(7,6) = 2; X(8,1) = 3; X(8,3) = 1; X(8,5) = 9; X(8,7) = 8;
X(9,4) = 5; X(9,5) = 7; X(9,6) = 9; X(9,7) = 3; X(9,8) = 6);% 定义决策变量
z = zeros(9,9); % 初始为全零矩阵
for i=1:9for j=1:9if X(i,j)==0 % 如果格子为空,定义决策变量为0z(i,j)=0;else % 如果格子不为空,定义决策变量为1-9之间的数字z(i,j)=X(i,j);endend
end% 设置目标函数和约束条件
Aeq=[]; beq=[]; Aineq=[]; bineq=[]; lb=0; ub=0; varnames=[]; obj=0;
for i=1:9for j=1:9if z(i,j)==0 % 如果格子为空,设置目标函数和约束条件为最小化填充数字的数量obj=obj+1; % 目标函数为最小化填充数字的数量Aineq=[Aineq -3*ones(1,9)]; % 每行最多只能填充8个数字的约束条件bineq=[bineq -8]; % 每列最多只能填充8个数字的约束条件Aineq=[Aineq -3*ones(9,1)]; % 每列最多只能填充8个数字的约束条件bineq=[bineq -8]; % 每行最多只能填充8个数字的约束条件Aineq=[Aineq -3*ones(3,3)]; % 每3x3子网格最多只能填充8个数字的约束条件bineq=[bineq -8]; % 每行最多只能填充8个数字的约束条件else % 如果格子不为空,设置目标函数和约束条件为最小化填充数字的数量,并设置格子中填入的数字为已知量obj=obj+0; % 目标函数为最小化填充数字的数量Aineq=[Aineq -3*ones(1,9)*z(i,j)]; % 每行最多只能填充8个数字的约束条件bineq=[bineq -8*z(i,j)]; % 每列最多只能填充8个数字的约束条件Aineq=[Aineq -3*ones(9,1)*z(i,j)]; % 每列最多只能填充8个数字的约束条件bineq=[bineq -8*z(i,j)]; % 每行最多只能填充8个数字的约束条件Aineq=[Aineq -3*ones(3,3)*z(i,j)]; % 每3x3子网格最多只能填充8个数字的约束条件bineq=[bineq -8*z(i,j)]; % 每行最多只能填充8个数字的约束条件end  end  
end

五、MATLAB回溯法求解数独问题

在MATLAB中求解数独,可以使用回溯法,这是一种试错的方法,它尝试分步解决问题。如果当前的解决方案不能被接受,就会“回溯”并寻找下一个可能的解决方案。

以下是一个MATLAB求解数独的示例代码:

	function solve_sudoku(board)% board: 9x9 矩阵,其中0表示空格,其他数字表示填入的数字% 返回值: 填充完成的数独矩阵% 检查输入矩阵是否有效if board(1,1) == 0 || board(9,9) == 0 || board(1,9) == 0 || board(9,1) == 0error('输入的数独矩阵无效。');end% 填充函数,返回填充的数字或0(如果无法填充)function num = fill_cell(row, col)% 检查该位置是否已填或超出范围if row < 1 || row > 9 || col < 1 || col > 9 || board(row, col) ~= 0error('无效的行或列。');end% 从1-9中查找可能的数字for num = 1:9if all(board(row, :) == num) || all(board(:, col) == num) || all(board(1:3:end, 1:3:end) == num)% 在该位置填充数字并返回board(row, col) = num;return;endend% 如果无法找到数字,返回0表示无法填充board(row, col) = 0;return;end% 从第一行开始,依次填充每个空格for col = 1:9for row = 1:9if board(row, col) == 0 % 如果当前位置是空格,则尝试填充数字fill_cell(row, col);endendend% 检查是否所有空格都已填充,如果是则返回完成的数独矩阵,否则返回错误信息if any(board(:) == 0) % 如果还有空格未填充,则返回错误信息error('无法解决该数独。');end
end

 这段代码首先检查输入的数独矩阵是否有效(即没有空格出现在第一行、第一列、第一宫或者最后一行、最后一列、最后一宫),然后使用嵌套循环遍历每一个空格,并调用fill_cell函数尝试填充数字。如果某个空格无法填充数字(即该位置所在的行、列、宫中已经包含了相同的数字),则将该空格标记为0表示无法填充。最后,检查是否所有的空格都已经被填充,如果有未被填充的空格,则返回错误信息表示该数独无解。如果所有的空格都被成功填充,则返回完成的数独矩阵。


六、Python求解数独问题

在Python中求解数独问题可以使用多种方法,其中一种简单的方法是基于回溯算法的实现。下面是一个使用Python实现的基于回溯算法的数独求解示例代码:

def solve_sudoku(board):"""求解数独问题的函数,使用回溯算法实现:param board: 9x9的数独矩阵,其中0表示空格,其他数字表示填入的数字:return: 填充完成的数独矩阵"""if board[0][0] == 0:  # 如果第一个空格存在,则无法求解该数独return Nonesolve_cell(board, 0, 0)  # 从第一个空格开始求解if board[0][0] == 0:  # 检查是否所有空格都已填充,否则返回错误信息return Nonereturn boarddef solve_cell(board, row, col):"""填充单个空格的函数,使用回溯算法实现:param board: 9x9的数独矩阵,其中0表示空格,其他数字表示填入的数字:param row: 要填充的空格所在行号(从0开始):param col: 要填充的空格所在列号(从0开始)"""if board[row][col] != 0:  # 如果该空格已填充,则返回return Nonefor num in range(1, 10):  # 尝试从1-9中查找可能的数字if is_valid(board, row, col, num):  # 检查该数字是否合法board[row][col] = num  # 在该位置填充数字并返回if solve_cell(board, row - 1, col) is None:  # 检查下一行同一列的空格是否可填充board[row][col] = 0  # 如果不可填充,则回溯并将该空格置为0else:return board  # 如果可填充,则返回完成的数独矩阵board[row][col] = 0  # 如果当前数字不可填充,则回溯并将该空格置为0return None  # 如果无法填充任何数字,则返回错误信息def is_valid(board, row, col, num):"""检查某个数字是否合法,即是否在同一行、同一列或同一宫中出现过:param board: 9x9的数独矩阵,其中0表示空格,其他数字表示填入的数字:param row: 要检查的数字所在行号(从0开始):param col: 要检查的数字所在列号(从0开始):param num: 要检查的数字(从1开始):return: True表示该数字合法,False表示该数字不合法"""for i in range(9):  # 检查同一行中是否有相同的数字出现if board[row][i] == num:return Falsefor i in range(9):  # 检查同一列中是否有相同的数字出现if board[i][col] == num:return Falsefor i in range(3):  # 检查同一宫中是否有相同的数字出现for j in range(3):  # 宫的行列偏移量为(3n-2,3n-2)(n为宫编号)if board[i + row // 3 * 3 - 2][j + col // 3 * 3 - 2] == num:return Falsereturn True  # 如果以上条件均不满足,则该数字合法,返回True

七、提高数独求解程序的效率

提高数独求解程序的效率可以从以下几个方面入手:

  1. 优化算法:选择合适的算法是提高数独求解程序效率的关键。对于回溯法,可以通过剪枝、分支限界等技术来减少搜索树的大小,提高搜索效率。对于数对法和唯余法,可以通过优化查找和验证候选数字的过程来提高效率。
  2. 使用数据结构:使用适当的数据结构可以加快程序的运行速度。例如,使用哈希表可以快速查找和验证候选数字,使用位图可以快速标记单元格的值。
  3. 并行计算:如果程序支持并行计算,可以尝试使用多线程或分布式计算来加速求解过程。通过将数独题目划分为多个子问题,并使用多个计算资源同时解决这些子问题,可以显著缩短求解时间。
  4. 机器学习:可以使用机器学习算法来提高程序的效率。例如,通过训练一个预测模型来预测数独题目的难度等级,以便程序在解决较难题目时使用更复杂的算法和更多的计算资源。
  5. 代码优化:通过对程序进行代码优化,可以减少程序的运行时间和内存占用。例如,优化循环结构、减少不必要的计算、使用适当的数据类型等。
  6. 硬件升级:通过升级计算机硬件,可以提高程序的运行速度。例如,使用更快的CPU、更大的内存、更快的硬盘等。

综上所述,提高数独求解程序的效率需要综合考虑算法、数据结构、并行计算、机器学习、代码优化和硬件升级等多个方面。


八、优化算法提高数独求解效率措施

优化算法以提高数独求解程序的效率可以采取以下措施:

  1. 回溯法的优化:

    • 剪枝:在搜索树中,可以通过剪枝来排除一些不可能的分支,减少搜索范围。例如,如果某个分支中的某个单元格的候选数字只有唯一的一个,那么这个分支肯定不是正确答案,可以直接排除。
    • 分支限界:在搜索树中,可以设定一个界限来限制搜索深度,或者设定多个界限来平衡搜索深度和广度,从而提高搜索效率。
  2. 数对法和唯余法的优化:

    • 快速查找和验证候选数字:使用哈希表等数据结构来存储和查找候选数字,减少查找和验证的时间。
    • 优化冲突检测:在验证候选数字时,可以通过一些技巧来快速检测冲突,避免不必要的计算。
  3. 并行计算:

    • 将数独题目划分为多个子问题,每个子问题使用一个线程或进程进行求解。
    • 使用多线程或多进程可以同时处理多个子问题,从而提高求解效率。
  4. 机器学习算法的应用:

    • 使用机器学习算法对数独题目进行分类,根据题目类型选择合适的算法和参数。
    • 通过机器学习算法对历史解法进行分析和总结,从而优化搜索策略和算法参数。
  5. 代码优化:

    • 优化循环结构,减少冗余计算。
    • 使用适当的数据类型和内存管理技巧,提高程序的内存使用效率。
  6. 预处理和后处理:

    • 对输入的数独题目进行预处理,例如去除重复的数字、填充默认值等。
    • 对求解结果进行后处理,例如去除冗余的数字、检查答案的合理性等。
  7. 算法集成:

    • 将不同的算法进行集成,形成混合算法。例如将回溯法、数对法和唯余法进行集成,根据题目类型和难度自动选择合适的算法进行求解。
    • 通过算法集成可以实现各算法的优势互补,从而提高求解效率和准确性。
  8. 动态规划的应用:

    • 在数独求解中引入动态规划的思想,通过状态转移和状态压缩等技术减少冗余计算。
    • 使用动态规划可以避免重复计算相同的子问题,从而提高求解效率。
  9. 数学定理的应用:

    • 利用数学定理来推导数独题目的解法,从而减少不必要的计算。例如,通过应用数学定理来判断某个单元格的值是否唯一,从而排除一些不可能的候选数字。
  10. 人工智能技术的应用:

    • 使用人工智能技术中的启发式搜索算法来指导搜索过程,从而减少搜索范围和提高搜索效率。例如,使用A*算法来选择下一个要探索的分支。

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

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

相关文章

智能故障诊断期刊推荐【英文期刊】

lnformation Fusion【一区 影响因子18.6】 https://www.sciencedirect.com/journal/information-fusion IEEE Transactions on Industrial lnformatics【一区 影响因子12.3】 https://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber9424 Journal of Manufacturing Syst…

Reactor网络线程模型

目录 传统下网络服务模型 事件监听模型 NIO核心概念 单线程Reactor模式 多线程Reactor模式 Kafka 的网络设计 主要概念 类比思维理解 参考文章 传统下网络服务模型 线程太多无法处理大规模请求 事件监听模型 NIO核心概念 nio是实现reactor模式的底层API代码 单…

使用 .NET Upgrade Assistant(升级助手)升级 .NET 老旧版本项目

使用 .NET Upgrade Assistant 升级 .NET 老旧版本项目 .NET Upgrade Assistant 概述.NET Upgrade Assistant 功能1、支持以下代码语言&#xff1a;2、支持的 .NET 升级路径&#xff1a;3、支持的项目类型&#xff1a; .NET Upgrade Assistant 安装1、使用 Visual Studio 扩展安…

中海达两项技术成果成功入选水利部第四届水文监测仪器设备推介名录

11月30日&#xff0c;由水利部科技推广中心主办&#xff0c;水利部国际合作与科技司和水利部水文司参与指导&#xff0c;长江水利委员会水文局和长江科学院共同协办的第四届水文监测仪器设备推介会在武汉香格里拉大酒店隆重举办&#xff0c;共有79家技术持有单位115项技术参会推…

上海亚商投顾:沪指探底回升 AI应用方向集体爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数早间震荡调整&#xff0c;深成指盘中跌超1%&#xff0c;午后探底回升全线翻红&#xff0c;北证50指数…

模板、STL标准模板库

模板 通常 对 具有相同要求的结果或者类 提供一个模板&#xff0c;根据实际使用时传过来的数据类型&#xff0c;决定函数和类的具体实现。 模板可以让类或者函数支持一种类型&#xff0c;这种通用类型在实际运行的过程中可以使用任何数据类型。 这种编程方式也成为"泛型编…

画图带你理清TCP协议三次握手和四次挥手

TCP 特性 1.确认应答机制 (ACK) 2.超时重传 3.建立连接 - 三次握手 4.断开连接 - 四次挥手 1.确认应答机制 (ACK) 确认应答是可靠传输的最核心机制&#xff0c;接收方反馈一个应答报文(ACK)&#xff0c;表示已收到 假设现在 A 想去 B 家里玩游戏&#xff0c;于是 A 给…

SEO外链工具,免费SEO引蜘蛛工具

随着互联网的迅猛发展&#xff0c;网站的排名成为各类企业的突破口。SEO&#xff08;Search Engine Optimization&#xff09;作为提高网站在搜索引擎中排名的重要手段&#xff0c;其成功与否直接关系到网站能否获得更多的曝光和流量。在SEO的世界中&#xff0c;引蜘蛛与外链的…

6-3 求3*3整数矩阵对角线元素之和

#include<stdio.h>int main(){int a[3][3],sum0;int i ,j;printf("输入元素&#xff1a;\n");for(i0;i<3;i)for(j0;j<3;j)scanf("%d",&a[i][j]);for(i0;i<3;i)sumsuma[i][i];printf("总和为&#xff1a;%d",sum);return 0;}

如何购买阿里云服务器

作为一家全球领先的云计算服务提供商&#xff0c;阿里云提供了多种云产品和解决方案&#xff0c;包括云服务器、对象服务OSS、数据库、存储、SSL、域名和CDN等。阿里云服务器是一种灵活可扩展的云计算服务&#xff0c;适用于各种规模和类型的企业和个人用户。阿里云以其出色的性…

邮件迁移-邮件同步-批量完成邮件迁移解决方案-imapsync

背景&#xff1a; 公司原来使用的邮箱服务器实现方式是james的cassandra-app&#xff0c;如今要启用新的邮件服务器&#xff0c;架构用的是james的distributed-app,升级后&#xff0c;要求邮件数据不丢失&#xff0c;因此要平滑完成邮件的迁移工作&#xff0c;保障升级后邮件不…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《考虑量化储热的多区域电–热综合能源系统优化调度》

标题 "考虑量化储热的多区域电–热综合能源系统优化调度" 可以分解为几个关键词和短语&#xff0c;我们逐步解读&#xff1a; 考虑量化储热&#xff1a; 考虑&#xff1a; 意味着在解决问题或进行研究时&#xff0c;会综合或纳入特定因素。量化&#xff1a; 将抽象的…

旺店通·企业奇门对接打通金蝶云星空查询店铺接口与客户新增接口

旺店通企业奇门对接打通金蝶云星空查询店铺接口与客户新增接口 数据源系统:旺店通企业奇门 旺店通是北京掌上先机网络科技有限公司旗下品牌&#xff0c;国内的零售云服务提供商&#xff0c;基于云计算SaaS服务模式&#xff0c;以体系化解决方案&#xff0c;助力零售企业数字化智…

android.view.WindowLeaked解决方法

问题 我在使用WindowManager添加一个button&#xff0c; windowManager.addView(button,layoutParams);然后关闭当前的这个Activity的时候遇到了WindowLeak这个问题&#xff0c;也就是所谓的窗体泄露。 原因 主要原因是因为android只允许在UI主线程操作&#xff0c;我在使用W…

编译原理实验词法分析

编译原理实验中的词法分析是编译过程的一个重要环节。它的任务是从左到右读入源程序的字符流&#xff0c;识别出一个个的单词&#xff0c;即基本保留字、标识符、常数、运算符、分隔符五大类。 在识别出下一个单词后&#xff0c;词法分析程序会验证其词法正确性&#xff0c;然…

卖家低价侵权了怎么处理

店铺如果未经品牌允许&#xff0c;做了产品销售&#xff0c;其实从知识产权的角度出发&#xff0c;对于品牌来说&#xff0c;店铺这种行为属于侵权&#xff0c;侵犯了品牌的商标权、著作权、专利权等&#xff0c;所以品牌可以对店铺进行知识产权维权&#xff0c;店铺如果未授权…

崩坏:星穹铁道《渔工案周年特别篇》读后感,有多少恶搞柯南的地方

在星穹铁道1.5版本中&#xff0c;智库新上线一本读物&#xff0c;名为《渔工案周年特别篇》读后感。 《渔工案周年特别篇》读后感可以说是恶搞了大量柯南的梗和目前柯南的槽点了&#xff0c;看的有些搞笑。 《渔工案》在此前1.3版本里面&#xff0c;三月七的说出渔工案内容&…

GPT4-Turbo技术原理研发现状及未来应用潜力分析报告

今天分享的是GPT4-Turb系列深度研究报告&#xff1a;《GPT4-Turbo技术原理研发现状及未来应用潜力分析报告》。 &#xff08;报告出品方&#xff1a;深度行业分析研究&#xff09; 报告共计&#xff1a;46页 图像理解能力提升&#xff1a;三大视觉学习方法  为打造视觉大模…

成品短视频app源码开发,你需要知道的最新动向

随着移动互联网的快速发展&#xff0c;短视频行业正迅速崛起。越来越多的创业者和开发者将目光投向了成品短视频app源码开发领域。下面我们将深入探讨这一领域的最新动向&#xff0c;带您了解成品短视频app源码开发的趋势与前景 成品短视频app源码开发的前景和机遇 短视频内容…

深圳招聘一般在哪个网站

深圳吉鹿力招聘网是一个专注于深圳招聘的平台&#xff0c;主要提供人才招聘服务。在深圳吉鹿力招聘网上&#xff0c;你可以找到各种深圳招聘信息&#xff0c;包括企业招聘、职位发布、简历投递等。深圳吉鹿力招聘网的出现&#xff0c;方便了求职者的投递和查询工作机会&#xf…