《算法笔记》总结No.2——模拟

news2024/10/6 16:20:01

一.简单模拟

考察代码能力,不涉及算法:一类题目怎么说你就怎么做的类型~

巴音布鲁克比赛,以车队为基准评选冠军。业务要求是:第一行输入正整数N,代表车手的总个数;接下来的N行每行键入两个数字:分别是车队编号和该车手得分。最终要求输出冠军车队及其得分~


没什么可说的,直接根据数组下标来储存各个队的积分,再升序排列,将最后一位输出即可,如下:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(int argc, char** argv) 
{
	int N=0;
	cin>>N;
	vector<int> V;
	for(int i=1;i<=N;i++)
		 V.push_back(0);
	for(int i=0;i<=N-1;i++)
	{
		int num=0,count=0;
		cin>>num>>count;
		V[num-1]+=count;
	}
	sort(V.begin(),V.end());
	cout<<"全部分数如下:"<<endl; 
	for(int i=0;i<=N-1;i++)
		if(V[i]!=0)
			cout<<V[i]<<" ";
	cout<<"最大值是:"<<V[N-1]<<endl;
}

博主本人习惯用STL库了,其实用普通的数组和简单的最大值搜索亦可实现~

总的来说,这类纯模拟显示的题目,只需要保证:

  • 数组下标不越界——或者说时间空间不超额
  • STL掌握熟练
  • 结构体使用灵活

一般情况下没有能卡壳的题目~

二.查找元素

小范围的查找直接遍历,范围大时可以使用二分查找(本帖暂不展开~)

键入10个学生信息,将制定班号的学生姓名全部输出:

#include <iostream>
#include <vector>
#include <string> 
using namespace std;

struct student{
	int num; 
	string name;
}; 
int main(int argc, char** argv) 
{
	vector<student> V;
	for(int i=0;i<10;i++)
	{
	 	int num=0;
	 	string name;
	 	student temp;
	 	cin>>num>>name;
	 	temp.name=name;
	 	temp.num=num;
	 	V.push_back(temp);
	}
	int num=0;
	cin>>num;
	for(int i=0;i<=V.size()-1;i++)
		if(V[i].num==num)
			cout<<V[i].name<<" ";
}

同样没什么难度~
 

三.图形输出

大一C语言常见的阴阳类题目,需要掌握格式化输出的细节~

输入一个数字和某种字符,然后输出一个由该字符组成的、腰长为num的等腰直角三角型:

#include <iostream>
using namespace std;

int main(int argc, char** argv) 
{
	int num=0;
	char goal;
	cin>>num>>goal;
	for(int i=1;i<=num;i++) //外层控制行数
	{
		for(int j=1;j<=i;j++)
			cout<<goal;
		cout<<endl; 
	}	
}

同样很简单,没什么可说的:

四.进制转换

        进制转换也是非常常用的基本功,这里博主只给出10进制分别转换为2/8/16进制的代码,至于这3种转换为10进制的函数,要考虑很多情况——比如二进制的输入方式,是int、还是vector<int>、string型,这要根据不同输入方式分类讨论~

十进制转二进制:

void TenTo2(int x)
{
	cout<<x<<"的2进制为:";
	vector<int> V;
	while(x!=0)
	{
		int temp=x%2;
		V.push_back(temp);
		x/=2;
	}
	for(int i=V.size()-1;i>=0;i--)
		cout<<V[i];
	cout<<endl;
}

 十进制转八进制:

void TenTo8(int x)
{
	cout<<x<<"的8进制为:";
	vector<int> V;
	while(x!=0)
	{
		int temp=x%8;
		V.push_back(temp);
		x/=8;
	}
	for(int i=V.size()-1;i>=0;i--)
		cout<<V[i];
	cout<<endl;
}

十进制转十六进制:

void TenTo16(int x)
{
	cout<<x<<"的16进制为:";
	vector<int> V;
	while(x!=0)
	{
		int temp=x%16;
		V.push_back(temp);
		x/=16;
	}
	for(int i=V.size()-1;i>=0;i--)
	{
		if(V[i]<=9)
			cout<<V[i];
		else if(V[i]==10)
			cout<<"A";
		else if(V[i]==11)
			cout<<"B";
		else if(V[i]==12)
			cout<<"C";
		else if(V[i]==13)
			cout<<"D";
		else if(V[i]==14)
			cout<<"E";
		else if(V[i]==15)
			cout<<"F";
	}
	cout<<endl;
} 

简单测试一下:

int main(int argc, char** argv) 
{
	int n=38;
	TenTo2(38);
	int m=100;
	TenTo8(m);
	int a=200;
	TenTo16(a);
}

 没什么问题:

首先要会STL和手写进制转换,写出来函数很容易的~) 

五.字符串处理 

  • 同样是非常吃代码基本功的题目类型
  • 建议STLcstringalgorithm头文件等自带的函数一定要学会

举例一道非常经典的基础题——说反话:即将输入的字符串倒序输出:

输入:My name is JSL

输出:Jsl is name My

对于新手的难点大致如下:

  1. 如何键入目标字符串?
  2. 如何逆转顺序

这里博主将输入的string断开直接保存在string型的vector中,然后图省事直接调用STL的reverse逆转一下即可~

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main(){
	vector<string> V;
	string s;
	char c;
	while ((cin >> s).get(c))
	{
		V.push_back(s);
		if (c =='\n')
			break;
	}
	cout << "输入结束~" << endl;
	reverse(V.begin(),V.end());
	for(int i=0;i<=V.size()-1;i++)
		cout<<V[i]<<" "; 
	return 0;
}


        总的来说,说什么就做什么的模拟题大致上没什么难度,只要熟练使用STL几乎不会有卡壳的地方:STL中最重要的就是vector和string容器,以及algorithm中的sort、reverse、reserve,上述几者配合结构体能达到非常出类拔萃的效果~ 

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

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

相关文章

【TOOL】ceres学习笔记(二) —— 自定义函数练习

文章目录 一、曲线方程1. 问题描述2. 实现方案 一、曲线方程 1. 问题描述 现有数学模型为 f ( x ) A e x B s i n ( x ) C x D f(x)Ae^xBsin(x)Cx^D f(x)AexBsin(x)CxD &#xff0c;但不知道 A A A 、 B B B 、 C C C 、 D D D 各参数系数&#xff0c;实验数据中含有噪声…

Windows程序设计课程作业-3(文件并发下载)

目录 目录 1.作业内容 2.作业要求 3.主要思路 1&#xff09;窗体和组件初始化 2&#xff09;下载管理器实例化 3&#xff09;按钮点击事件处理 4&#xff09;窗体加载事件处理 5&#xff09;下载消息处理 4.主要难点 1&#xff09;多线程管理&#xff1a; 2&#xff09…

智能优化算法改进策略之局部搜索算子(六)--进化梯度搜索

1、原理介绍 进化梯度搜索(Evolutionary Gradient Search, EGS)[1]是兼顾进化计算与梯度搜索的一种混合算法&#xff0c;具有较强的局部搜索能力。在每次迭代过程中&#xff0c;EGS方法首先用受进化启发的形式估计梯度方向&#xff0c;然后以最陡下降的方式执行实际的迭代步骤&…

【JavaSE ⑧】P219 ~ 225 Date类‘’DateFormat类转化Date和字符串;Calendar类获得日历中某值,修改日历,日历转日期

目录 日期时间类1 Date类概述常用方法 2DateFormat类构造方法格式规则常用方法parse方法format方法 3 Calendar类概念获取方式常用方法get/set方法add方法getTime方法 ● 练习1.判断Date不同参数构造的输出2. 用日期时间相关的API&#xff0c;计算一个人已经出生了多少天。3. 获…

【Java】已解决java.lang.NoSuchMethodException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.lang.NoSuchMethodException异常 在Java编程中&#xff0c;java.lang.NoSuchMethodException是一个常见的运行时异常&#xff0c;它通常表示尝试通过反射调用一个不存在…

Ai调教写作技巧,不会还有人在到处找指令吧!一篇文章带你学会生成爆款文章写作指令

大家好&#xff0c;我是网创有方的站长&#xff0c;今天教大家一个重磅级的ai调价指令。 相信很多朋友们都去到处找过写作指令&#xff0c;包括我之前也是&#xff0c;但是随着运用ai写作的次数越来越多&#xff0c;我也是渐渐地熟悉了ai的调教。那么本文的目的是什么呢&#…

使用obdumper对oceanbase进行备份,指定2881端口

1.安装obdumper &#xff08;1&#xff09;下载软件 OceanBase分布式数据库-海量数据 笔笔算数https://www.oceanbase.com/softwarecenter &#xff08;2&#xff09;安装软件 参考&#xff1a;https://www.oceanbase.com/docs/common-oceanbase-dumper-loader-100000000062…

C语言标准库

目录 引言 一、C标准库概述 常用标准库函数 字符串处理 数学运算 动态内存分配 标准库的扩展与限制 扩展功能 使用限制 使用自定义库与第三方库 创建自定义库 使用第三方库 表格总结 标准库头文件及功能 常用标准库函数 总结 引言 C标准库是C编程语言的重要组成…

Android studio登录Google账号超时的解决方法

确保自己已经打开了代理&#xff08;科学上网&#xff09;在设置-外观与行为-系统设置-HTTP代理 中打开“自动检测代理设置”&#xff1a; 再次重新尝试登录Google账号&#xff0c;登陆成功&#xff01; 学术会议征稿 想要了解国内主办的覆盖学科最全最广的学术会议&#xff0c…

redis持久化操作【随记】

持久化 Redis它是将数据保存到内存当中,内存里的数据最大特点: 断电易失.保存在内存的数据就没有了.如果如果这些数据还有用,业务使用啥的,不能就让它这么没有了. redis当中提供持久化机制, 说白了,将内存的数据 —-> 写入到磁盘. –> 持久化. 1 rdb方式 redis database,…

帕金森患者饮食指南:科学调养,呵护健康

&#x1f33c;在医学的广阔领域中&#xff0c;帕金森病作为一种慢性神经系统疾病&#xff0c;除了需要专业的医疗治疗外&#xff0c;日常饮食的调养也显得尤为重要。 今天&#xff0c;就为大家带来一份专为帕金森患者打造的饮食建议&#xff0c;希望能为大家的健康调养提供一些…

泛微E9与金蝶云星空ERP的无缝集成案例详解(包括接口与字段)

业务系统现状 背景介绍 泛微E9和金蝶云星空ERP是两款广泛应用与企业管理的信息系统&#xff0c;分别在移动办公自动化和企业资源计划管理领域占据重要地位。然而企业在使用这些系统时往往面临着信息孤岛和系统孤立的问题&#xff0c;导致数据无法在不系统之间高效流转共享。 当…

微服务——服务治理

目录 1 什么是服务治理&#xff1f;2 为什么需要服务治理&#xff1f;3 服务治理的关键点3.1 服务注册与发现3.2 负载均衡3.3 容错与熔断3.4 服务监控与告警3.5 服务配置管理 4 示例说明5 总结 1 什么是服务治理&#xff1f; 简单来说&#xff0c;服务治理就是对微服务架构中的…

Java:113-Spring Data JPA详解

Spring Data JPA详解 Spring Data Jpa 是应用于Dao层的⼀个框架&#xff0c;简化数据库开发的&#xff0c;作用和Mybatis框架⼀样&#xff0c;但是在使用方式和底层机制是有所不同的&#xff0c;最明显的⼀个特点&#xff0c;Spring Data Jpa 开发Dao的时候&#xff0c;很多场景…

气膜建筑:持久耐用的建筑选择—轻空间

随着科技的发展&#xff0c;气膜建筑以其快速施工、节能环保和灵活多用的特点&#xff0c;正在各个领域获得越来越多的应用。然而&#xff0c;许多人对气膜建筑的耐用程度仍存有疑虑。本文将从气膜建筑的材料、结构设计和维护等方面&#xff0c;深入探讨气膜建筑的耐用性&#…

【Android WebView】WebView基础

一、简介 WebView是一个基于webkit引擎、展现web页面的控件。Android的Webview在低版本和高版本采用了不同的webkit版本内核&#xff0c;4.4后直接使用了Chrome。 二、重要类 以WebView类为基础&#xff0c;WebSettings、WebViewClient、WebChromeClient为辅助共同完成安卓段加…

阿里云,大周末彻底要爆!

大家好&#xff0c;我是肉哥&#xff0c;熟悉我的人都知道&#xff0c;每年6.18我都会带领大家薅阿里云的羊毛&#xff0c;今年也不例外&#xff0c;作为程序员搞台ECS&#xff0c;做个项目满满的成就感&#xff01;阿里内部小伙伴透漏&#xff0c;今年的618活动优惠力度更是拉…

FlinkCDC pipeline模式 mysql-to-paimon.yaml

flinkcdc 需要引入&#xff1a; source端&#xff1a; flink-cdc-pipeline-connector-mysql-xxx.jar、mysql-connector-java-xxx.jar、 sink端&#xff1a; flink-cdc-pipeline-connector-paimon-xxx.jar flinkcdc官方提供connect包下载地址&#xff0c;pipeline模式提交作业和…

成章数据库安装体验

对标Redis的国产数据库 一位来自国产数据库的朋友想请我试用一下他们的产品。并且直言早期问题比较多&#xff0c;还请多多包涵。一般对于这种比较客观和友好的我都愿意试试。对于怼天怼地吊打谁的我个人就不尝试了。 他们中文名字叫“成章数据库“我就尝试从一个不了解产品的…

Qt底层原理:深入解析QWidget的绘制技术细节(1)

在Qt5中&#xff0c;QWidget的绘制流程比较分散&#xff0c;网上介绍的文章也很少&#xff0c;因此写一篇文章总结记录一下这部分的知识点。 笔者使用的是Qt5.15.2的源码。 基本的绘制流程&#xff1a;从update到合成 更新请求&#xff08;Invalidate&#xff09;: 当一个QWidg…