2.19C语言学习

P8597 [蓝桥杯 2013 省 B] 翻硬币

因为把相邻两个硬币翻转两次相当于不翻,所以最优方案中同一组硬币最多只会翻转一次,故翻转顺序无后效性,考虑贪心:从前往后比较,发现一个不同的硬币就把它和他后面的硬币翻转,计数器累加,这样最后累加结果一定是最优方案的次数。

#include<bits/stdc++.h>
using namespace std;
char a[1009],b[1009];
int main(){scanf("%s",a);scanf("%s",b);int n=strlen(a);int cnt=0;for(int i=0;i<n;i++){if(a[i]!=b[i]){cnt++;a[i]=b[i];if(a[i+1]=='o')a[i+1]='*';else a[i+1]='o';}}printf("%d",cnt);return 0;
}

P8637 [蓝桥杯 2016 省 B] 交换瓶子

和上面那道题有点类似,都是交换,这个也是贪心的思路

读入并遍历瓶子的序列,如果该瓶子位置正确可以直接忽视,如果不对,答案加一,往后扫,扫到对应位置的瓶子就交换位置,然后下一个瓶子继续

#include<bits/stdc++.h>
using namespace std;
int a[10009];
int main(){int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}int ans=0;for(int i=1;i<=n;i++){if(a[i]!=i){for(int j=i;j<=n;j++){if(a[j]==i){int temp=a[j];a[j]=a[i];a[i]=temp;ans++;break;}}}}printf("%d",ans);return 0;
}

P1434 [SHOI2002] 滑雪

这题直接dfs会tle,所以要采用记忆化搜索,把每次搜到的点的结果记录下来,下次再经过这个点时可以直接用上次搜到的结果,可以省下许多时间

#include<bits/stdc++.h>
using namespace std;
int maps[111][111],s[111][111],dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
bool use[111][111];
int n,m,cnt;
int dfs(int x,int y){if(s[x][y])return s[x][y];s[x][y]=1;for(int i=0;i<4;i++){int xx=x+dx[i],yy=y+dy[i];if(xx>0&&yy>0&&xx<=n&&yy<=m&&maps[xx][yy]<maps[x][y]){dfs(xx,yy);s[x][y]=max(s[x][y],s[xx][yy]+1);}}return s[x][y];
}
int main(){scanf("%d %d",&n,&m);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&maps[i][j]);}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cnt=max(cnt,dfs(i,j));}}printf("%d",cnt);return 0;
}

邻接矩阵介绍
        邻接矩阵就是利用二维矩阵表示图中各顶点之间的关系,对于有n个顶点的图来说,用n阶方阵来表示该图,其中矩阵元素表示从顶点到之间的边,的大小表示边的权值。如果顶点到没有边,则可以将设置为0或者。

        如下图所示,左边是一个无向图,右边是其对应的邻接矩阵,该图是无权图,因此有边的值都设置为1。

                           

        下面是有向图及其邻接矩阵

                                     

         从上面可见,无向图的邻接矩阵是关于主轴对称的,第i行或第j列就是顶点的度(边数)。图中的边数为"1的个数"/2。对于有向图,由于其具有方向性,因此邻接矩阵一般是不对称的,第i行1的个数是顶点的出度,第i列1的个数是其入度。图的边数等于矩阵中1的个数。

对于带权图来说,只需要将1替换为边的权值即可,下面是带权图及其邻接矩阵。

                          

        其中,表示没有边,可以是一个计算机能够接受的较大的值即可。

总结
        图的邻接矩阵表示的优点: 非常直观,并且容易实现,编写算法也较简便,因而应用较广; 根据矩阵元素Aij=1或0,便于判定两个顶点之间是否有边(弧)相连; 计算顶点的度数,或有向图的入度、出度方便; 计算图的边数算法简单等。

        图的邻接矩阵表示的缺点: 邻接矩阵事实上是一种顺序存储结构,具有顺序结构共有的缺点,比如:只能按最大空间需求申请内存空间、插入和删除顶点复杂等; 空间复杂度高,n个顶点的图,存储邻接矩阵需要n2个单元,如果一个图的顶点数较多,但边(弧)数较少的话--稀疏图,邻接矩阵一样需要n2个存储单元,就太浪费存储空间; 统计图的边数算法虽然简单,用双重循环统计“1”的个数即可,但其时间复杂度为O(n2)。

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

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

相关文章

单例模式的几种实现方式

在Java中&#xff0c;实现单例模式主要有几种方式&#xff1a;懒汉式、饿汉式、双重检查锁定、静态内部类和枚举。每种方式都有其特点和适用场景。 1. 饿汉式&#xff08;线程安全&#xff09; 饿汉式是最简单的一种实现方式&#xff0c;通过静态初始化实例&#xff0c;保证了…

springboot 事务管理 详细介绍

在Spring Boot中&#xff0c;事务管理是一种关键的特性&#xff0c;它确保了数据的完整性和一致性。Spring Boot提供了对事务管理的内置支持&#xff0c;使得在应用程序中使用事务变得非常简单。 事务管理的基本概念 事务是指一系列操作&#xff0c;这些操作要…

15-55V输入自动升降压 光伏MPPT自动跟踪充电方案 大功率300瓦

1.MPPT原理--简介 MPPT&#xff0c;全称为Maximum Power Point Tracking&#xff0c;即最大功点跟踪&#xff0c;它是一种通过调节电气模块的工作状态&#xff0c;使光伏板能够输出更多电能的电气系统能够将太阳能电池板发出的直流电有效地贮存在蓄电池中&#xff0c;可有效地…

【蓝桥杯】算法模板题(Floyd算法)

一.弗洛伊德算法 用途&#xff1a;用来求解多源点最短路径问题。 思想&#xff1a;Floyd算法又称为插点法&#xff0c;是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。 主要步骤&#xff1a; 1&#xff09;初始化&#xff1a;使用邻接矩阵初始化dis…

第十四届“中关村青联杯”全国研究生数学建模竞赛-A题:无人机在抢险救灾中的优化运用

目录 摘 要: 1 问题重述 1.1 问题背景 1.2 待解决的问题 2 模型假设及符号说明

GitHub仓库文件部署

目录 软件下载和安装 git创建仓库 Github仓库配置 git管理软件配置 Git管理 软件下载和安装 首先需要下载git&#xff0c;以及git管理软件&#xff0c;对其进行安装。 git创建仓库 首先需要创建仓库&#xff0c;在本地仓库文件夹cmd之后输入以下指令创建git仓库文件。 …

解决laravel-admin安装报错1071 Specified key was too long问题

在执行php artisan admin:install命令安装laravel-admin的时候&#xff0c;如果你使用的数据库是MySQL v5.7.7以下版本就会报下面的错&#xff1a; SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL:…

课时39:表达式_运算符_简单计算

3.1.2 简单计算 学习目标 这一节&#xff0c;我们从 [ ] 、 l e t 、 ( ( ) ) 、 []、let、(())、 []、let、(())、(())、小结 五个方面来学习。 $[] 简介 $[]方法&#xff0c;常用于整数计算场景&#xff0c;适合不太复杂的计算&#xff0c;运算结果是小数的也会自动取整…

递归读取文件夹下的所有文件

水一篇文章 &#x1f436; 代码 package file;import org.apache.commons.lang3.StringUtils; import org.junit.Test;import java.io.File; import java.util.Objects;/*** FlattenDirFiles** author allens* date 2024/2/19*/ public class FlattenDirFiles {// 文件数量pri…

小米空气净化器2s使用体验

这个产品最早上市是2017年&#xff0c;我买回来实际上只用了1年就弃用了&#xff0c;性能不行&#xff0c;使用体验也不好。 打算买新的空气净化器&#xff0c;抽空吐槽一下。 这个净化器发售价是899&#xff0c;在当时来说算中下水平的&#xff0c;小米的&#xff0c;有米家…

什么是跨端,常用的跨端技术

跨平台是跨操作系统&#xff0c;跨端是指客户端 常见的客户端有&#xff0c;web、android、ios 等&#xff0c;客户端的特点是有界面、由逻辑&#xff0c;所以包含逻辑跨端和渲染跨端。 常用的跨端技术方案 React Native&#xff1a; 由 Facebook 推出的开源框架&#xff0c;…

Spring Boot与LiteFlow:轻量级流程引擎的集成与应用含完整过程

点击下载《Spring Boot与LiteFlow&#xff1a;轻量级流程引擎的集成与应用含完整过程》添加链接描述 1. 前言 本文旨在介绍Spring Boot与LiteFlow的集成方法&#xff0c;详细阐述LiteFlow的原理、使用流程、步骤以及代码注释。通过本文&#xff0c;读者将能够了解LiteFlow的特…

数据分析师SQL面试准备(part1)

1. SQL 万能框架 2. SQL的书写顺序&#xff0c;跟程序真的执行顺序不同 3. 4. 5. 6. 7. case when utilization 8. 9. 10. 11.

OpenHarmony—UIAbility组件间交互(设备内)

UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时&#xff0c;会涉及到启动特定的UIAbility&#xff0c;该UIAbility可以是应用内的其他UIAbility&#xff0c;也可以是其他应用的UIAbility&#xff08;例如启动三方支付UIAbility&#xff09;。 本章节将从如下场…

多维时序 | Matlab实现LSTM-Mutilhead-Attention长短期记忆神经网络融合多头注意力机制多变量时间序列预测模型

多维时序 | Matlab实现LSTM-Mutilhead-Attention长短期记忆神经网络融合多头注意力机制多变量时间序列预测模型 目录 多维时序 | Matlab实现LSTM-Mutilhead-Attention长短期记忆神经网络融合多头注意力机制多变量时间序列预测模型预测效果基本介绍程序设计参考资料 预测效果 基…

01.Redis中间件实战1

Redis中间件实战1 Redis各种数据结构实战 字符串 需求:将用户信息存储至缓存中,实现每次前端请求获取用户个人详情时直接从缓存中获取。来演示字符串的写入与读取。 技术方案:为了实现这个需求,首先需要建立用户对象实体,里面包含用户个人的各种信息,包括ID、年龄、姓…

Windows 命令提示符(CMD)操作(三):用户管理

三、用户管理 3.1 net user 管理用户帐户&#xff0c;如创建、删除用户 一般语法&#xff1a; net user [username [password | *] [options]] [/domain] [/add] [/delete] [/expires:{date | never}] [/active:{yes | no}]常见选项和参数包括&#xff1a; [username]&…

化学空间可视化(chemical space visualization)开源软件ChemPlot的安装及使用

文章目录 前言一、ChemPlot是什么&#xff1f;二、conda环境安装ChemPlot1. 创建conda环境2. 安装chemplot及需要的包3. 检验安装 三、使用步骤1. 化合物数据库可视化使用方法BBBP数据库的t-SNE降维后可视化&#xff1a;BBBP数据库的PCA降维后可视化&#xff1a;BBBP数据库的UM…

qt QXlsx操作 excel 单元格

1.单元格设置宽度 m_pxlsx->setColumnWidth(5, 10);//5为列&#xff0c;10为列的宽度&#xff0c;excel表格中默认单元格宽度为9.36英寸 注意&#xff1a;单元格列宽的单位是英寸&#xff0c;默认的单元格列宽为9.36英寸。 注意&#xff1a;单元格列宽单位不是像素。 我之…

shapely 笔记:基本方法

1 线性方法 1.1 object.interpolate(distance[, normalizedFalse]) print(LineString([(0, 0), (0, 1), (1, 1)]).interpolate(1.5)) #POINT (0.5 1)print(LineString([(0, 0), (0, 1), (1, 1)]).interpolate(0.75, normalizedTrue)) #POINT (0.5 1) LineString([(0, 0), (0…