算法基础——模拟

目录

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.mzph.cn/news/899242.shtml

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

相关文章

PrimeTime生成.lib竟暗藏PG添加Bug

在primeTime里生成lib&#xff0c;如何能带上相关的pg信息&#xff1f; 这是一位群友的发问&#xff0c;就这个问题总结了下可能的原因和解决步骤&#xff1a; 概念 PrimeTime是Synopsys的静态时序分析工具&#xff0c;通常用于在设计的各个阶段进行时序验证。 1&#xff09…

yolo系列算法最新进展

YOLO&#xff08;You Only Look Once&#xff09;系列算法作为目标检测领域的代表性模型&#xff0c;自2016年推出以来不断迭代&#xff0c;在速度与精度之间寻求平衡。截至2024年&#xff0c;其最新进展主要集中在以下几个方面&#xff1a; ‌1. YOLOv8 的优化与扩展‌ ‌官方…

动态规划:路径类dp

路径类dp 1.矩阵的最小路径和_牛客题霸_牛客网 #include<iostream> #include<cstring> using namespace std;const int N 510; int f[N][N]; int n, m;int main() {cin >> n >> m;memset(f, 0x3f3f3f, sizeof(f));f[0][1] 0;for (int i 1; i < …

性能测试理论基础-性能指标及jmeter中的指标

1、什么是性能测试 通过一定的手段,在多并发下情况下,获取被测系统的各项性能指标,验证被测系统在高并发下的处理能力、响应能力,稳定性等,能否满足预期。定位性能瓶颈,排查性能隐患,保障系统的质量,提升用户体验。 2、什么样的系统需要做性能测试 用户量大,页面访问…

Debian,Ubuntu,设置/etc/vim/vimrc.tiny解决:上下左右变成ABCD,backspace退格键失效的问题

Debian,Ubuntu,用设置/etc/vim/vimrc.tiny解决:上下左右变成ABCD,backspace退格键失效的问题 Debian,Ubuntu, 默认的vi 在编辑模式下的上下左右变成ABCD , 退格键也失效 解决办法1, 卸载重装vim sudo apt remove vim; sudo apt install -y vim解决办法2: 修改 /etc/vim/vimr…

Redis 单机16个db,集群只有一个的基本知识

目录 前言1. 基本知识2. 配置 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器&#xff0c;无代码爬取&#xff0c;就来&#xff1a;bright.cn Java基本知识&#xff1a; java框架 零基础从入门到精通…

蓝桥杯C++基础算法-多重背包(优化)

这段代码实现了一个多重背包问题的动态规划解法&#xff0c;并且使用了二进制拆分&#xff08;或称二进制优化&#xff09;来优化物品的数量处理。这种方法可以显著减少状态转移的次数&#xff0c;提高算法的效率。以下是代码的详细思路解析&#xff1a; 1. 问题背景 给定 n 个…

FALL靶机攻略

1.下载靶机&#xff0c;导入靶机 下载地址&#xff1a;https://download.vulnhub.com/digitalworld/FALL.7z 开启靶机。 2. 靶机、kali设置NAT网卡模式 3. kali扫描NAT网卡段的主机 kali主机 nmap扫描&#xff1a;nmap 192.168.92.1/24 判断出靶机ip是192.168.92.133。开启…

notepad++代码查看器分享

文章目录 &#x1f4dd; Notepad 简介&#x1f527; 主要特点打开.c文件示意高亮语法展示全局替换功能展示 &#x1f4dd; Notepad 简介 Notepad 是一款 免费的开源文本编辑器和源代码编辑器&#xff0c;运行在 Windows 系统上。 它是对 Windows 自带“记事本”的增强版本&…

详细介绍Spring MVC的执行流程是怎么样的?

Spring MVC 是 Spring 框架的一部分&#xff0c;用于构建 Web 应用程序。它的执行流程如下&#xff1a; 前端控制器&#xff08;DispatcherServlet&#xff09;接收请求&#xff1a;用户通过浏览器发送 HTTP 请求到服务器&#xff0c;请求首先被前端控制器 DispatcherServlet 接…

MySQL中的内连接与外连接详解:基础与进阶应用

文章目录 表的内连和外连&#xff08;重点&#xff09;内连接外连接左外连接右外连接 简单回顾 表的内连和外连&#xff08;重点&#xff09; 表的连接分为内连和外连 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选&#xff0c;我们前面学习的查询都…

动态内存分配与内存对齐

在C语言及其他低级编程语言中,内存管理是一个至关重要的主题。动态内存分配和内存对齐是确保程序高效和稳定运行的关键因素。本文将深入探讨动态内存分配的原理,内存对齐的概念,并解释它们如何共同影响程序的性能和资源利用。 一、动态内存分配简介 1.1 动态内存分配的概念…

Milvus×最新版DeepSeek v3:对标Claude,本地数据五分钟写网站

前言 就在昨晚&#xff0c;DeepSeek v3推出了新版本V3-0324&#xff0c;再次一夜爆火。 虽然官方表示“这只是一次小升级”“API接口和使用方式不变”&#xff0c;但经过Zilliz的第一时间实测&#xff0c;我们发现无论是逻辑能力&#xff0c;还是编程能力&#xff0c;相较原本的…

6.M-LAG专题

M-LAG 的作用及特点 能不能简单的描述以下M-LAG的工作原理? 跨设备链路聚合&#xff0c;将两台物理设备在聚合层面虚拟成一台设备来实现跨设备链路聚合&#xff0c;从而提供设备级冗余保护和流量负载分担 M-LAG(跨设备链路聚合)是基于IEEEP802.1A协议的跨设备链路聚合技术。…

每日免费分享之精品wordpress主题系列~DAY16

主题介绍&#xff1a; 今日在网上寻找wordpress主题的时候逛到了大叔的网站&#xff0c;赶脚这个主题蛮不错的&#xff0c;于是百度一下&#xff0c;果然&#xff0c;这个主题很受欢迎。作为主题下载站追梦者也不甘落后&#xff0c;马上就发布出来了&#xff0c;希望对你们有用…

LeeCode 383. 赎金信

给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1&#xff1a; 输入&#…

目标检测20年(一)

今天看的文献是《Object Detection in 20 Years: A Survey》&#xff0c;非常经典的一篇目标检测文献&#xff0c;希望通过这篇文章学习到目标检测的基础方法并提供一些创新思想。 论文链接&#xff1a;1905.05055 目录 一、摘要 1.1 原文 1.2 翻译 二、介绍 三、目标检测…

分割 / 合并大文件的简单 python 代码

使用方法 分割: python fs.py -n <分割后的文件个数> <要分割的文件> 合并: python fs.py -m <分割文件1> <分割文件2> ... 示例 PS C:\Users\Administrator\Desktop> python fs.py 使用方法: 分割: python fs.py -n <分割后的文件个数> &…

IDEA 快捷键ctrl+shift+f 无法全局搜索内容的问题及解决办法

本篇文章主要讲解IDEA、phpStrom、webStrom、pyCharm等jetbrains系列编辑器无法进行全局搜索内容问题的主要原因及解决办法。 日期&#xff1a;2025年3月22日 作者&#xff1a;任聪聪 现象描述&#xff1a; 1.按下ctrlshiftf 输入法转为了繁体。 2.快捷键ctrlshiftr 可以全局检…

树状数组【数据结构】

树状数组 简介 1.应用 1.单点修改区间查询 2.区间修改单点查询(差分) 3.区间修改区间查询(差分公式) 总而言之,就是动态维护前缀和。 2.树状结构图 3.lowbit函数 我们知道&#xff0c;任何一个正整数都可以被表示成一个二进制数。如&#xff1a; ( 2 ) 10 ( 10 ) 2 (2)_{10…