首页 > 其他分享 >数字分组求偶数和

数字分组求偶数和

时间:2025-01-07 20:01:05浏览次数:9  
标签:cnt num 数字 int 求偶 vector 分组 numbers groups

问题描述

小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

思路

1.用一个二维动态数组vector<vector<int>>去存每一个数的每一位

2.遍历每一个数的每一位,进行增加,每次到最后就判断。(这里用递归的方式进行搜索可以解决我们这个需求)如图所示:

代码

#include<bits/stdc++.h>
using namespace std;
void comb(vector<vector<int>>& groups,int index,int currentSum,int& cnt){
    if(index-1==groups.size()-1){//因为最后一次下标+1会等于这个数组的大小
        if(currentSum%2==0) cnt++;
        return;
    }
    for(int num:groups[index]){//遍历每一种可能
        comb(groups,index+1,currentSum+num,cnt);
    }
}
int solution(vector<int> numbers) {
    vector<vector<int>> groups;//用一个二维动态数组存起来
    for(int num:numbers){//遍历当中的每一个数
        vector<int> tmp;//每一个动态数组存每个数的每一位
        while(num>0){
            tmp.push_back(num%10);//这样子会从个位开始存储
            num/=10;
        }
        reverse(tmp.begin(),tmp.end());//因此得翻转一下变成高位向低位存储
        groups.push_back(tmp);//这一个动态数组存进去
    }
    int cnt=0;
    comb(groups,0,0,cnt);
    return cnt;
}

int main() {
    std::cout << (solution({123, 456, 789}) == 14) << std::endl;
    std::cout << (solution({123456789}) == 4) << std::endl;
    std::cout << (solution({14329, 7568}) == 10) << std::endl;
    return 0;
}

标签:cnt,num,数字,int,求偶,vector,分组,numbers,groups
From: https://blog.csdn.net/2401_82809047/article/details/144992393

相关文章

  • 力扣13罗马数字转整数
    classSolution:defromanToInt(self,s:str)->int:#定义罗马数字到整数的映射change={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}#......
  • 解锁企业数字转型新密码:JNPF低代码让业务“活”起来
    一、低代码热潮来袭,企业转型何去何从?在当下这个数字化浪潮汹涌澎湃的时代,企业数字化转型已经不再是一道选择题,而是一道生存题。市场环境瞬息万变,客户需求愈发多样化,技术迭代日新月异,传统的开发模式在应对这些挑战时显得力不从心。这时候,低代码开发平台应运而生,宛如一场及......
  • 解锁企业数字化转型的密码:JNPF 低代码开发平台实战
    一、企业数字化转型的刚需与痛点在当今数字化浪潮下,企业数字化转型已不再是选择题,而是关乎生存与发展的必答题。就拿制造业来说,积成电子所在的电力行业,产品定制化程度高,市场需求紧急化、碎片化趋势加剧,传统的生产运营流程难以招架,交货期延误、库存积压等问题频发。齐鲁安......
  • LeetCode 747. 至少是其他数字两倍的最大数
    问题描述给定一个整数数组nums,其中总是存在唯一的一个最大整数。任务是找出数组中的最大元素,并检查它是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的下标;否则,返回-1。解题思路这个问题可以通过两个主要步骤解决:寻找最大元素及其下标:首先,我们需要遍历数组......
  • vxe-table 实现 excel 选择两个单元格,拖拽自动识别数字规则并根据规则自动填充新的单
    vxe-table实现excel选择两个单元格,拖拽自动识别数字规则并根据规则自动填充新的单元格官网:https://vxetable.cn鼠标按住右下角扩展按钮,当选取一个单元格时,自动将当前内容填充到扩展区域的所有单元格中,如果不希望自动识别数字规则,可以同时按住ctrl键可取消值自动识别数字功......
  • BOE(京东方)联手故宫再度打造沉浸式数字展 引领数字艺术文化新篇章
    2025年1月6日,由BOE(京东方)联合故宫博物院及腾讯主办的“‘纹’以载道——故宫沉浸式数字体验展”在苏州湾数字艺术馆盛大启幕,1月7日将正式开展。值此故宫博物院建院百年开年之际,BOE(京东方)凭借前沿数字技术,将故宫的瑰丽“国宝”以全新数字化形式串联起来,让故宫文化在苏州湾重焕生机......
  • 将字符型数字转换成int型
    直接使用ASCII码字符数字的ASCII码和实际数字之间有一个固定偏移量,'0'的ASCII值为48。所以可以通过减去'0'来完成转换:charch='5';intnum=ch-'0';cout<<num<<endl;//输出:5在转换之前,可以使用std::isdigit检查字符是否为数字,避免意外输入导致错误。......
  • 清单管理系统如何助力企业数字化转型?工具选择指南
    一、数字化转型中的清单管理系统作用与意义数字化转型意味着企业通过新兴技术提升工作效率、增强管理能力和客户服务。作为数字化工具的重要组成部分,清单管理系统在现代企业管理中具有不可替代的作用。它不仅帮助企业构建有序、高效的工作环境,还能优化资源配置、提升协作效率,实现......
  • python毕设非物质文化遗产数字平台程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于非物质文化遗产数字平台的研究,现有研究主要集中在非遗文化的简单数字化展示与记录方面,如建立一些静态的网页来介绍非遗项目等。专......
  • [读书日志]从零开始学习Chisel 第五篇:Scala面向对象编程——类继承(敏捷硬件开发语言Ch
    3.3类继承3.3.1Scala中的类继承为了节省代码量和反映实际各种类之间的联系,通常采取两种策略,包含和继承。包含是说明一个类中包含另一个类的对象,但两者之间没有必然联系。继承是从一个宽泛的类派生出更具体的类的过程,被继承的类称为“超类”或“父类”,而派生出来的类称为......