算法基础——模拟

server/2025/4/1 1:52:48/

目录

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.ppmy.cn/server/180062.html

相关文章

清华大学第10讲:迈向未来的AI教学实验396页PPT 探索未来教育的无限可能|附PPT下载方法

导 读INTRODUCTION 今天跟大家分享的是清华大学新闻与传播学院、人工智能学院双聘教授沈阳教授团队出品的《迈向未来的AI教学实验》课程作业集&#xff0c;随着人工智能技术的飞速发展&#xff0c;教育领域也迎来了前所未有的变革。该报告为沈阳教授与学生们在“迈向未来的AI教…

基于音频驱动的CATIA动态曲面生成技术解析

一、技术背景与创新价值 在工业设计领域&#xff0c;参数化建模与动态仿真的结合一直是研究热点。本文提出的音频驱动建模技术突破了传统参数调整方式&#xff0c;实现了音乐节奏与三维曲面的实时动态交互。该技术可广泛应用于以下场景&#xff1a; ​艺术化产品设计&#xf…

VMware Windows Tools 存在认证绕过漏洞(CVE-2025-22230)

漏洞概述 博通公司&#xff08;Broadcom&#xff09;近日修复了 VMware Windows Tools 中存在的一个高危认证绕过漏洞&#xff0c;该漏洞编号为 CVE-2025-22230&#xff08;CVSS 评分为 9.8&#xff09;。VMware Windows Tools 是一套实用程序套件&#xff0c;可提升运行在 VM…

数字化转型1061丨某著名企业新零售云业务中台总体解决方案(文末有下载方式)

该文档围绕某著名企业新零售云业务中台展开&#xff0c;全面阐述了行业现状、中台实践、产品介绍、适用场景及案例&#xff0c;为新零售企业数字化转型提供解决方案。 行业现状分析&#xff1a;新零售企业面临业务需求多元多变、消费者触点爆发增长、渠道体系经营效率低等问题&…

REVISITING MAE PRE-TRAINING FOR 3D MEDICALIMAGE SEGMENTATION

Abstract 自我监督学习&#xff08;SSL&#xff09;提供了一个令人兴奋的机会&#xff0c;可以释放大量尚未开发的临床数据集的潜力&#xff0c;为各种下游应用程序提供标签数据的稀缺。虽然SSL已经彻底改变了自然语言处理和计算机视觉等领域&#xff0c;但它们在3D医学图像计…

解释时间复杂度 O() 表示法,如何评估算法效率?

时间复杂度与前端开发实战指南 作为前端工程师&#xff0c;理解时间复杂度能帮助我们写出高性能代码。以下是结合前端场景的深度解析&#xff1a; 一、时间复杂度的本质 时间复杂度用大O符号表示算法执行时间随数据规模增长的变化趋势。​关注的是最坏情况下增长的量级&…

2025美国网络专线国内服务商推荐

在海外业务竞争加剧的背景下&#xff0c;稳定高效的美国网络专线已成为外贸企业、跨国电商及跨国企业的刚需。面对复杂的国际网络环境和严苛的业务要求&#xff0c;国内服务商Ogcloud凭借其创新的SD-WAN技术架构与全球化网络布局&#xff0c;正成为企业拓展北美市场的优选合作伙…

【R】一文快速掌握 R 语言指令(R 备忘清单)

文章目录 入门获取帮助下载和使用库工作目录 基础入门变量和赋值数据类型向量和列表数据框(Data Frame)函数条件语句for 循环语句while 循环数据读取和输出清理工作空间 图形绘制散点图直方图线图绘制散点图绘制直方图绘制折线图 向量创建向量选择向量元素按位置按值命名向量 重…