c++算法之枚举

目录

解空间的类型

循环枚举解空间

例题 特别数的和

输入格式

输出格式

输入样例:

输出样例:

例题 反倍数

问题描述

输入格式

输出格式

样例输入

样例输出

例题 找到最多的数


枚举算法是一种基本的算法思想,它通过穷举所有可能的情况来解决问题。它的基本思想是将问题的解空间中的每个可能的解都枚举出来并进行验证和比较,找到满足问题条件的最优解或者所有解。

枚举算法适用于问题规模较小、解空间可穷举的情况。它的优点是简单直观,不需要复杂的数学推导,易于实现。但是,由于需要穷举所有可能的情况,对于问题规模较大的情况,枚举算法的时间复杂度可能会非常高,效率较低。

解空间的类型

解空间可以是一个范围内的所有数字(或二元组、字符串等数据),或者满足某个条件的所有数字。

当然也可以是解空间树,一般可分为子集树或排列树,针对解空间树,需要使用回溯法进行枚举

循环枚举解空间

1.首先确定解空间的维度,即问题中需要枚举的变量个数

例如当题目中要求的是满足条件的数字时,我们可以循环枚举某个范围内的数字。

如果要求的是满足条件的二元组,我们可以用双重循环分别枚举第一个和第二个变量,从而构造出一个二元组。

2.对于每个变量,确定其可能的取值范围。这些范围可以根据问题的性质和约束条件来确定。这一步往往是时间复杂度优化的关键。

3.在循环体内,针对每个可能解进行处理。可以进行问题的验证、计算、输出等操作

例题 特别数的和

小明对数位中含有 2、0、1、92、0、1、9 的数字很感兴趣(不包括前导 00),在 11 到 4040 中这样的数包括 1、2、9、101、2、9、10 至 32、3932、39 和 4040,共 2828 个,他们的和是 574574。

请问,在 11 到 n 中,所有这样的数的和是多少?

输入格式

共一行,包含一个整数 n。

输出格式

共一行,包含一个整数,表示满足条件的数的和。

数据范围

1≤n≤10000

输入样例:

40

输出样例:

574

#include<iostream>
using namespace std;
int f(int x)
{
	while (x)
	{
		int y = x % 10;
		if (y == 2 || y == 0 || y == 1 || y == 9)
		{
			return 1;
		}
		x /= 10;
	}
	return 0;
}
int main()
{
	int n; cin >> n;
	int ans = 0;
	for (int i = 1; i <= n; i++)
	{
		if (f(i))ans += i;
	}
	cout << ans << endl;
	system("pause");
	return 0;
}

例题 反倍数

问题描述

给定三个整数 a, b, c,如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍,则这个数称为反倍数。
请问在 1 至 n 中有多少个反倍数。

输入格式

输入的第一行包含一个整数 n。
第二行包含三个整数 a, b, c,相邻两个数之间用一个空格分隔。

输出格式

输出一行包含一个整数,表示答案。

样例输入

30
2 3 6

样例输出

10

#include<iostream>
using namespace std;
int n, a, b, c;
int f(int x)
{
	if (x % a && x % b && x % c)return 1;
	else return 0;
	return 0;
}
int main()
{
	cin >> n >> a >> b >> c;
	int ans = 0;
	for (int i = 1; i <= n; i++)
	{
		if (f(i))ans ++;
	}
	cout << ans << endl;
	system("pause");
	return 0;
}

例题 找到最多的数

#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
map<int, int>mp;
int main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int n,m; cin >> n >> m;
	for (int i = 1; i <= n * m; i++)
	{
		int x; cin >> x;
		mp[x]++;
	}

	for (const auto&e : mp)
	{
		if (2 * e.second > n * m)cout << e.first << endl;
	}
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux软件安装(yum命令)

1.Linux系统的应用商店 操作系统安装软件有许多种方式&#xff0c;一般分为&#xff1a; 下载安装包自行安装 如win系统使用exe文件、msi文件等如mac系统使用dmg文件、pkg文件等 系统的应用商店内安装 如win系统有Microsoft Store商店如mac系统有AppStore商店 Linux命令行…

中科星图——Landsat9_C2_SR大气校正后的地表反射率数据

数据名称&#xff1a; Landsat9_C2_SR 数据来源&#xff1a; USGS 时空范围&#xff1a; 2022年1月-2023年3月 空间范围&#xff1a; 全国 数据简介&#xff1a; Landsat9_C2_SR数据集是经大气校正后的地表反射率数据&#xff0c;属于Collection2的二级数据产品&#…

Consider defining a bean of type ‘XXXX‘ in your configuration.

今天学习尚硅谷的SpringCloud时&#xff0c;发现支付模块无法启动&#xff0c;控制台输出下面的错误: 看起来可能是dao层没有被注入。 然后根据我已有的知识&#xff0c;我检查了注解Mapper Mapper public interface PaymentDao {public int create(Payment payment);public…

linux ssh

ssh 是一种安全通道协议&#xff0c;主要用来实现字符界面的远程登录&#xff0c;远程复制等功能。ssh协议对通信双方的数据传输进行了加密处理&#xff0c;其中包括用户登录输入的用户口令&#xff0c;SSH为建立在应用层和传输层基础上的安全协议。对数据进行压缩&#xff0c…

C# 图解教程 第5版 —— 第21章 异步编程

文章目录 21.1 什么是 异步21.2 async/await 特性的结构21.3 什么是异步方法21.3.1 异步方法的控制流21.3.2 取消一个异步操作21.3.3 在调用方法中同步地等待任务21.3.4 在异步方法中异步地等待任务21.3.5 Task.Delay 方法 21.4 GUI 程序中的异步操作&#xff08;*&#xff09;…

【前端转安卓】-Java基础知识笔记

常量定义&#xff1a;final public class HelloWorld {// 静态常量public static final double PI 3.14;// 声明成员常量final int y 10;public static void main(String[] args) {// 声明局部常量final double x 3.3;} }变量声明、赋值 String username,address,phone,te…

Python+Selenium做自动化测试(超详细整理)

一、项目介绍 目的 测试某官方网站登录功能模块可以正常使用【文末有配套视频教程和免费的资料文档领取】 用例 1.输入格式正确的用户名和正确的密码&#xff0c;验证是否登录成功&#xff1b; 2.输入格式正确的用户名和不正确的密码&#xff0c;验证是否登录失败&#xff…

OpenCV-Python(34):FAST算法

目标 理解 FAST 算法的基础使用OpenCV 中的FAST 算法相关函数进行角点检测 介绍 FAST算法&#xff08;Features from Accelerated Segment Test&#xff09;是一种用于在图像中快速检测角点的算法。它是一种基于像素的检测方法&#xff0c;具有高效、准确的特点&#xff0c;常…

【小程序开发需要多少钱?】

哈喽&#xff0c;大家好&#xff0c;这里是智创开发。 我们今天聊聊开发一个小程序需要多少钱。 由于自己组建团队来开发小程序成本过高&#xff0c;大品牌的企业一般都不会这么搞&#xff0c;所以我们今天只谈假如我有需求&#xff0c;找服务商来全程搞定的费用大致是多少。和…

关于镜头选型时的一些注意事项

1、问题背景 最近的项目调试过程中&#xff0c;遇到与镜头相关的问题比较多。所以本文主要总结一下镜头选型时需注意的事项&#xff0c;保证在项目前期就能规避掉一些问题&#xff0c;避免项目延期。 2、问题分析 我们拿到手的一般都是摄像头模组&#xff0c;在进行摄像头调试时…

java+ssm+vue代码视频学习讲解

一、ssm 1.项目文件结构 2.数据库连接信息 3.其他配置信息 4.java代码文件目录介绍 5.entity层代码 6.controller&#xff0c;service&#xff0c;dao&#xff0c;entity层之间的关系 7.controller层代码 8.登陆拦截功能实现 AuthorizationInterceptor.java 9.文件上传功能 …

日志审计系统Agent项目创建——获取Linux的ip并将得到的日志插入数据库中(Linux版本)

上一篇文章可以直接展示系统在运行过程中的日志&#xff0c;读取日志文件https://blog.csdn.net/wjl990316fddwjl/article/details/135553685 如何将得到的日志插入数据表中&#xff0c;进行更可观的展示&#xff1f; 1、创建表格并执行&#xff0c;可以看到数据库已经创建好…

paypal贝宝怎么绑卡支付

一、PayPal是什么 PayPal是一个很多国家地区通用的支付渠道&#xff0c;我们可以把它理解为一项在线服务&#xff0c;相当于美国版的支付宝。你可以通过PayPal进行汇款和收款&#xff0c;相比传统的电汇和西联那类的汇款方式&#xff0c;PayPal更加简单和容易&#xff0c;被很…

使用ffmpeg对视频进行静音检测

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-sta…

Retinal Structure Detection in OCTA Image viaVoting-Based Multitask Learning

一、摘要 研究背景&#xff1a;自动检测视网膜结构&#xff0c;如视网膜血管(RV)、中央凹血管区(FAZ)和视网膜血管连接(RVJ)&#xff0c;对了解眼部疾病和临床决策具有重要意义。 主要工作&#xff1a;在本文中&#xff0c;提出了一种新的基于投票的自适应特征融合多任务网络…

Spring之AOP源码(二)

书接上文 文章目录 一、简介1. 前文回顾2. 知识点补充 二、ProxyFactory源码分析1. ProxyFactory2. JdkDynamicAopProxy3. ObjenesisCglibAopProxy 三、 Spring AOP源码分析 一、简介 1. 前文回顾 前面我们已经介绍了AOP的基本使用方法以及基本原理&#xff0c;但是还没有涉…

SQL注入攻击

1.用java实现登录的检查 package jdbc1;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.Scanner;public class Login {public static void main(String args[]){try(Connection connec…

新型的变现和引流方式

AI 数字人短视频正成为一种新型的变现和引流方式。随着人工智能技术的不断发展&#xff0c;数字人技术也越来越成熟&#xff0c;为用户提供了更加逼真、生动的虚拟形象。通过AI 数字人短视频&#xff0c;用户可以创作出具有个性化特点的短视频内容&#xff0c;并将其发布在各大…

PLC控制脉冲轴绝对位置往复运动(三菱FX系列简单状态机编程)

有关状态机的具体介绍,专栏有很多文章,大家可以通过下面的链接查看: https://rxxw-control.blog.csdn.net/article/details/125488089https://rxxw-control.blog.csdn.net/article/details/125488089三菱FX系列回原功能块介绍 https://rxxw-control.blog.csdn.net/article…

在vue3和上挂载方法,以及在页面中怎么使用原型(公共)上的方法

//新建的项目的main.js文件是这样的 //main.js 文件 //befor import { createApp } from vue; import App from ./App.vue;const app createApp(App); app.mount(#app);以下例子用于解释在vue3.0的main.js中挂载公共的方法&#xff08;foo&#xff09; //main.js 文件 //afte…