当前位置: 首页 > wzjs >正文

郑州小学班级网站建设正规seo需要多少钱

郑州小学班级网站建设,正规seo需要多少钱,macromedia怎么做网站,网站建设论文开题报告范文Python解决“数字分组求偶数和”问题 问题描述测试样例问题解决代码 问题描述 小M面对一组从 1 到 9 的数字,这些数字被分成多个小组,并从每个小组中选择一个数字组成一个新的数。目标是使得这个新数的各位数字之和为偶数。任务是计算出有多少种不同的分…

Python解决“数字分组求偶数和”问题

  • 问题描述
  • 测试样例
  • 问题解决
  • 代码

问题描述

小M面对一组从 1 到 9 的数字,这些数字被分成多个小组,并从每个小组中选择一个数字组成一个新的数。目标是使得这个新数的各位数字之和为偶数。任务是计算出有多少种不同的分组和选择方法可以达到这一目标。

  • numbers: 一个由多个整数字符串组成的列表,每个字符串可以视为一个数字组。小M需要从每个数字组中选择一个数字。

例如对于[123, 456, 789],14个符合条件的数为:147 149 158 167 169 248 257 259 268 347 349 358 367 369。

测试样例

样例1:
输入:numbers = [123, 456, 789]
输出:14

样例2:
输入:numbers = [123456789]
输出:4

样例3:
输入:numbers = [14329, 7568]
输出:10

问题解决

这道题目综合运用了动态规划和位运算的知识,是一道典型的组合问题。

题目要求从每个数字组中选择一个数字,使得这些数字组成的数的各位数字之和为偶数。我们可以通过动态规划的方法来解决这个问题。具体来说,我们可以定义两个状态:f[0] 表示当前选择的数字之和为偶数的方案数,f[1] 表示当前选择的数字之和为奇数的方案数。对于每个数字组,我们统计其中奇数和偶数的个数,然后更新这两个状态。最终,f[0] 就是我们需要的答案。

  1. 初始化状态:
  • 初始时,f[0] 表示当前选择的数字之和为偶数的方案数,初始值为1(即空集的情况)。
  • f[1]表示当前选择的数字之和为奇数的方案数,初始值为0。
  1. 遍历每个数字组:
  • 对于每个数字组,统计其中奇数和偶数的个数,分别记为 c[0] 和 c[1]。
  1. 更新状态:
  • 更新 f[0] 为 f[0] * c[0] + f[1] * c[1],即当前选择的数字之和为偶数的方案数。
  • 更新 f[1] 为 f[0] * c[1] + f[1] * c[0],即当前选择的数字之和为奇数的方案数。
  1. 返回结果:
  • 最终,f[0] 即为所求的符合条件的方案数。

时间复杂度:
遍历每个数字组的时间复杂度为 O(n),其中 n 是数字组的长度。对于每个数字组,统计奇数和偶数的个数的时间复杂度为 O(m),其中 m 是数字组中数字的位数。因此,总的时间复杂度为 O(n×m)。
空间复杂度:
仅使用了常数级别的额外空间,空间复杂度为 O(1)。

注意:

  1. 位运算:在这道题目中,我们使用 int(ch) & 1 来判断一个数字是奇数还是偶数,这是一种常见的位运算技巧。
  2. 动态规划:是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。在这道题目中,我们通过定义两个状态 f[0] 和 f[1] 来表示当前选择的数字之和为偶数和奇数的方案数,并通过状态转移方程来更新这两个状态。

代码

def solution(numbers: list) -> int:# 初始化一个列表 f,其中 f[0] 表示当前和为偶数的组合数,f[1] 表示当前和为奇数的组合数f = [1, 0]# 遍历每一个数字组for x in numbers:# 初始化一个列表 c,其中 c[0] 表示当前数字组中偶数的数量,c[1] 表示当前数字组中奇数的数量c = [0, 0]# 遍历当前数字组中的每一个数字for ch in str(x):# 统计当前数字组中偶数和奇数的数量c[int(ch) & 1] += 1# 更新 f 列表,计算新的组合数# f[0] 更新为:当前偶数组合数乘以当前数字组中偶数的数量 + 当前奇数组合数乘以当前数字组中奇数的数量# f[1] 更新为:当前偶数组合数乘以当前数字组中奇数的数量 + 当前奇数组合数乘以当前数字组中偶数的数量f = [f[0] * c[0] + f[1] * c[1], f[0] * c[1] + f[1] * c[0]]# 返回最终的偶数组合数return f[0]if __name__ == '__main__':# 测试用例print(solution(numbers = [123, 456, 789]))print(solution(numbers = [123456789]))print(solution(numbers = [14329, 7568]))

输出:
14
4
10

http://www.dtcms.com/wzjs/258362.html

相关文章:

  • 厅网站建设项目背景如何做好品牌推广工作
  • 网站项目需求百度指数1000搜索量有多少
  • 浙江网站建设网上海外贸seo公司
  • 淄博高端网站建设网上销售平台有哪些
  • 西安的电商平台网站建设爱站工具seo综合查询
  • 做网站手机端不做PC可以吗长春今日头条新闻
  • 平面设计范文关键词seo公司
  • 优良的定制网站建设公司最受欢迎的十大培训课程
  • 淘宝客不做网站可以做么百度app客服人工在线咨询
  • 番禺做网站系统推广关键词怎么设置
  • 做网站包括备案吗最近的重大新闻
  • 石家庄外贸网站建设公司百度竞价多少钱一个点击
  • 百度糯米做网站多少钱百度关键字推广费用
  • 做请帖的网站网站快速排名推荐
  • 商城网站用html做北京seo优化外包
  • 第三方微信网站建设搜索关键词查询
  • 看汽车图片的网站可以做壁纸最新的疫情数据
  • 开源分销系统seo建站的步骤
  • 黄冈网站建设云seo
  • 新房网站建设公司天津网站优化公司
  • 做网站的步骤唐山公司做网站
  • 电子商务网站建设也管理公司网站模板
  • 广告设计与制作专业就业工资百度推广优化师是什么
  • wordpress新闻网站网络推广一个月的收入
  • 慈溪做网站公司网络推广优化品牌公司
  • 有趣的网站代码电商推广平台
  • 电子商务的建站流程独立站seo实操
  • asp网站目录权限青岛seo排名公司
  • 专业帮人做网站号码抖音seo软件工具
  • 太原建设北路小学网站西安百度推广优化托管