算法基础——模拟

目录

1 多项式输出

2.蛇形方阵

3.字符串的展开


模拟,顾名思义,就是题⽬让你做什么你就做什么,考察的是将思路转化成代码的代码能⼒。这类题⼀般较为简单,属于竞赛⾥⾯的签到题(但是,万事⽆绝对,也有可能会出现让人非常难受的模拟题),但是在学习语法阶段接触的题,大多数都属于模拟题。

1 多项式输出

题⽬来源: 洛⾕

题⽬链接:P1067 [NOIP2009 普及组] 多项式输出

难度系数: ★

[解法]

根据题意模拟+分类讨论(分的越详细,越不会出现bug):

仅需按照顺序,考虑每⼀项的三件事情:符号 + 系数 + 次数。 

处理「符号」:

  1. 负数:直接输出
  2. 正数:(1) 是第n项,不输出+ (2)其余情况,直接输出+

处理「系数」:

  • 先取绝对值:

                (1)不是1,直接输出

                (2)是1

                        末项 - 需要输出

                        不是末项 - 不需要输出

处理「次数」:

  • 次数为 1 ,输出 "x";
  • 次数为0 ,什么也不输出

  • 其他 ,输出 "x^" + 对应的次数;

【参考代码】

#include<iostream>
#include<cmath>
using namespace std;int main(){int n;cin >> n;//循环次数 for(int i = n;i >= 0;i--){int op;cin >> op;if(op == 0) continue;//出来系数为0的情况 //1.符号 if(op < 0) cout << "-";else{if(i != n) cout << "+";} //2.系数int a = abs(op);if(a != 1 || (a==1 && i== 0)) cout << a;//3.次数if(i == 1)cout << "x";else if(i == 0) ;else{cout << "x^" << i;} }return 0;
}

2.蛇形方阵

题⽬来源: 洛⾕

题⽬链接:P5731 【深基5.习6】蛇形⽅阵

难度系数: ★

[解法]

模拟填数的过程。(实现的方式有很多种)

在⼀个矩阵中按照⼀定规律填数的通用解法

  1. 定义方向向量

             比如本题⼀共四个方向,分别是右、下、左、上,对应: (0, 1)、(1, 0)、(0, -1)、(-1, 0)

           

            遇到其他类型的题只需要更改方向向量即可;

     2.根据规则结合方向向量填数

            (1) 朝⼀个方向⾛,⼀边走⼀边填数,直到越界;

            (2) 越界之后,结合定义的方向向量,求出下⼀轮应该⾛的方向以及应该到达的正确

                        位置;

            (3)重复上述过程,直到把所有的数填完为止;

【参考代码】

#include<iostream>
using namespace std;const int N = 15;//定义方向向量 右,下, 左,上 
int dy[] = {1,0,-1,0};
int dx[] = {0,1,0,-1};int arr[N][N];int main(){int n;cin >> n;//模拟填数过程 int cet = 1; //当前位置要填的数 int x = 1,y = 1;//初始位置 int pos = 0;//当前的方向 while(cet <= n*n){arr[x][y] = cet;//计算下一个位置 int a = x + dx[pos];int b = y + dy[pos];//判断是否越界 if(a < 1 || a > n || b < 1 || b > n || arr[a][b]){//更新出正确的该走的位置 pos = (pos + 1) % 4;a = x + dx[pos];b = y + dy[pos];}cet++;x = a;y = b;} for(int i = 1;i <= n;i++){for(int j = 1;j <= n;j++){printf("%3d",arr[i][j]);}printf("\n");}return 0;
}

3.字符串的展开

题⽬来源: 洛谷

题⽬链接: P1098 [NOIP2007 提⾼组] 字符串的展开

难度系数: ★

【解法】

纯代码题 - 考察代码能力 :>

【参考代码】

#include<iostream>
#include<algorithm>
using namespace std;int p1,p2,p3,n;
string s,ret;//判断是否是数字字符 
bool isdig(char ch){return ch >= '0' && ch <= '9';;
}//判断是否小写字母 
bool islet(char ch){return ch >= 'a' && ch <= 'z';
}//展开 把(left,right)之间的字符展开 
void add(char l,char r){string t;//遍历中间的字符for(char ch = l + 1;ch < r;ch++){char tmp = ch;//处理p1 if(p1 == 2 && islet(tmp)) tmp -= 32; //小写变大写 else if(p1 == 3) tmp = '*';//变成星号 //处理p2 for(int i = 1;i <= p2;i++){t += tmp;}}//处理p3 if(p3 == 2) reverse(t.begin(),t.end());ret += t; 
}
int main(){cin >> p1 >> p2 >> p3 >> s;n = s.size();for(int i = 0;i < n;i++){char ch = s[i];if(s[i] != '-' || i == 0 || i == n-1) ret += ch;else{char left = s[i-1], right = s[i+1];//判断是否展开 if((isdig(left) && isdig(right) && left < right) || (islet(left) && islet(right) && left < right)){//展开add(left,right); }else{ret += ch; }}}cout << ret << endl;return 0;
}

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

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

相关文章

Java---类与对象

类与对象 前言&#xff1a;一、面向对象二、类的定义1.类的定义格式2.访问修饰限定符 三、类的实例化四、this引用1.this引用2.this引用的原因 五、对象的构造和初始化1.初始化对象2.构造方法(1).构造方法的概念&#xff1a;(2).特性&#xff1a;(3).this调用:3.就地初始化4.默…

【巧文书高效编标工具】技术解决方案

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 巧文书高效编标工具**是一款基于自然语言处理&#xff08;NLP&#xff09;与自动化技术的智能编标解决方案&#xff0c;旨在提升标书编制效率、降低人工错误率。通过结合规则引擎、模板化生成和AI辅助校对&#xff0c…

1.基于TCP的简单套接字服务器实现

目录 1. TCP通信流程 2. 服务器端的通信流程 2.1 创建用于监听的套接字 2.2 绑定本地IP地址和端口 2.3 设置监听 2.4 等待接受客户端的连接请求 2.5 与客户端进行通信 2.6 客户端连接服务器 3.代码实现 client.cpp server.cpp 运行方式 在本文中&#xff0c;我们将…

【大模型基础_毛玉仁】5.3 附加参数法:T-Patcher

目录 5.3 附加参数法&#xff1a;T-Patcher5.3.1 补丁的位置1&#xff09;键值存储体2&#xff09;补丁设计 5.3.2 补丁的形式5.3.3 补丁的实现1&#xff09;准确性2&#xff09;局部性 5.3 附加参数法&#xff1a;T-Patcher 附加参数法&#xff1a;通过引入可训练的额外参数实…

【原理系列】计算机组成原理-第一遍阅读总结

目录 创作灵感&#xff1a; 总览&#xff1a; 1、计算机抽象与技术 2、ISA指令集架构 3、CPU处理器 4、存储器 创作灵感&#xff1a; 夯实计算机原理&#xff0c;构建知识框架 此系列将总结和记录我对 【深入浅出计算机组成原理-台湾科技大学/元智大学的刘一宇教授】 的…

React程序打包与部署

===================== 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 为生产环境准备React应用最小化和打包环境变量错误处理部署到托管服务部署到Netlify探索高级主题:Hooks、Su…

C++运算符重载、类的转换构造函数和类型转换函数的基础练习

练习1&#xff1a;&#xff08;困难&#xff09; 建立一个矩阵类&#xff0c;可以完成指定的操作或运算。 说明&#xff1a; &#xff08;1&#xff09;、矩阵为2行3列&#xff0c;基类型为整型&#xff1b; &#xff08;2&#xff09;、操作或运算&#xff1a;初始化&…

PERL开发环境搭建>>Windows,Linux,Mac OS

特点 简单 快速 perl解释器直接对源代码程序解释执行,是一个解释性的语言, 不需要编译器和链接器来运行代码>>速度快 灵活 借鉴了C/C, Basic, Pascal, awk, sed等多种语言, 定位于实用性语言,既具备了脚本语言的所有功能,也添加了高级语言功能 开源.免费 没有&qu…

docker(2) -- 启动后修改目录和网络

1. 前言 docker启动前是image文件&#xff0c;启动后是container文件&#xff0c;启动的时候我们可以指定容器的挂载目录以及网络类型&#xff0c;但启动后&#xff0c;这些信息都以配置文件的形式保存在container中&#xff0c;container重新启动时无法重新指定这些信息&…

Flutter开发中如何避免UI显示溢出的问题

文章目录 1. 使用灵活的布局组件2. 允许内容滚动3. 处理文本溢出4. 检查父容器约束5. 使用自适应布局6. 调试工具7. 其他技巧总结 在 Flutter 开发中&#xff0c;UI 溢出&#xff08;如 A RenderFlex overflowed 错误&#xff09;通常是由于布局空间不足或子组件尺寸超出父容器…

使用FastExcel时的单个和批量插入的问题

在我们用excel表进行插入导出的时候&#xff0c;通常使用easyexcel或者FastExcel&#xff0c;而fastexcel是easy的升级版本&#xff0c;今天我们就对使用FastExcel时往数据库插入数据的业务场景做出一个详细的剖析 场景1 现在我们数据库有一张组织表&#xff0c;组织表的字段…

【力扣刷题|第十七天】0-1 背包 完全背包

目标和 力扣题目网址:目标和 这道题我们先用回溯的思想来做。首先我们设正数和为S&#xff0c;数组和为N&#xff0c;目标值为T&#xff0c;那么S-(N-S)T化简之后可以得S(TN)/2即选择的正数个数为偶数&#xff0c;而且NT也为偶数&#xff0c;那么第一个判断条件我们就有了&…

深入浅出 Embedding

1. 什么是 Embedding? Embedding(嵌入)是一种将高维数据映射到低维连续空间的技术,用于表达数据的语义关系。简单来说,它是一种向量化表示,将文本、图像、用户行为等信息转换为数值向量,使得相似的数据在向量空间中距离更近。 2. 如何理解 Embedding? 2.1 浅显易懂的…

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft Fabric 服务器搭建,Fabric 模组详细搭建教程

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft Fabric 服务器搭建&#xff0c;Fabric 模组详细搭建教程 一、 服务器介绍二、安装 JDK 21三、搭建 Minecraft 服务端四、本地测试连接五、如何添加模组&#xff08;mods&#xff09;六、添加服务&#xff0c;并设置开…

【MLP-BEV(10)】BEVPooling V1和BEVPooling V2的view_transformer,进行鱼眼图片实践

文章目录 先说说 BEVPoolv1步骤1:3D点生成步骤2 2D特征采样和BEV特征生成特点再谈谈BEVPoolv2步骤1:3D点生成步骤2: 计算索引关系步骤3: `voxel_pooling`计算鱼眼图片进行实践步骤1、3D点生成(基于Kannala-Brandt 进行调整)步骤2、2D特征采样和BEV特征生成(1) 体素化 (Voxe…

鸿蒙项目源码-天气预报app-原创!原创!原创!

鸿蒙天气预报项目源码包运行成功含文档ArkTS语言。 我半个月写的原创作品&#xff0c;请尊重原创。 原创作品&#xff0c;盗版必究&#xff01;&#xff01;&#xff01;&#xff01; 原创作品&#xff0c;盗版必究&#xff01;&#xff01;&#xff01;&#xff01; 原创作品…

告别桌面杂乱与充电焦虑,移速165W百变桌面充电站首发体验

告别桌面杂乱与充电焦虑&#xff0c;移速165W百变桌面充电站首发体验 哈喽小伙伴们好&#xff0c;我是Stark-C~ 先如今&#xff0c;家里的电子产品越来越多&#xff0c;手机、平板、电脑三件套已经是基础配置&#xff0c;还有相机、Switch、智能手表等&#xff0c;这些产品用…

skill插件教程——skill程序的组成以及调用方法

skill程序的基本组成 1、基础的程序文件 插件运行的基础——就是你写程序的文件&#xff0c;格式为il文件&#xff0c;就是文本文件格式 2、调用程序的文件——allegro.ilint 文件申明在那个位置——在这个文件夹下&#xff0c;写入你调用的函数。 例如load&#xff08;“…

解决Dubbo3调用Springcloud接口报No provider available from registry RegistryDirectory

解决Dubbo调用Springcloud接口报No provider available from registry RegistryDirectory 问题发现问题解决 问题发现 在学习Dubbo过程中&#xff0c;Dubbo官网有一篇文章《微服务最佳实践&#xff0c;零改造实现 Spring Cloud & Apache Dubbo 互通》&#xff0c;跟着示例…

基于RFID技术建筑物资材料智能管理解决方案

建筑行业仓库和物资材料管理面临诸多挑战&#xff0c;如工程设备重复利用的管理需求、物资出入库管理不规范、账物不符、物资丢失等问题。特别是在复杂多变的工地环境中&#xff0c;对物资进行科学规范的管理难度极大。上海岳冉基于RFID技术的建筑物资材料智能管理解决方案聚焦…