当前位置: 首页 > wzjs >正文

深圳企业网站制作推广运营班级优化大师手机版下载(免费)

深圳企业网站制作推广运营,班级优化大师手机版下载(免费),杭州知名的企业网站建设,个人工作室网站怎么做文章目录 1.[P1067 [NOIP 2009 普及组\] 多项式输出 - 洛谷](https://www.luogu.com.cn/problem/P1067)题目解析算法解析代码实现 2.[P5731 【深基5.习6】蛇形方阵 - 洛谷](https://www.luogu.com.cn/problem/P5731)题目解析算法原理代码实现 3.[P1098 [NOIP 2007 提高组\] 字符…

在这里插入图片描述

文章目录

  • 1.[P1067 [NOIP 2009 普及组\] 多项式输出 - 洛谷](https://www.luogu.com.cn/problem/P1067)
    • 题目解析
    • 算法解析
    • 代码实现
  • 2.[P5731 【深基5.习6】蛇形方阵 - 洛谷](https://www.luogu.com.cn/problem/P5731)
    • 题目解析
    • 算法原理
    • 代码实现
  • 3.[P1098 [NOIP 2007 提高组\] 字符串的展开 - 洛谷](https://www.luogu.com.cn/problem/P1098)
    • 算法原理
    • 代码实现

模拟,顾名思义,就是题目让你做什么你就做什么,考察的是将思路转化成代码的代码能力

1.[P1067 NOIP 2009 普及组] 多项式输出 - 洛谷

image-20250303143631185

题目解析

这道题是简单的模拟实现题目,主要将算式通过代码来实现出来,将所有的情况分析出来,代码进行实现即可

算法解析

这道题需要细心处理分类:

分类如下:

  • 处理「符号」:
    • 如果系数小于 0 ,直接输出 “-”; ◦ 如果系数大于 0 ,除了⾸项不输出 “+”,其余全部输出 “+”。
  • 处理「系数」:
    • 先取⼀个绝对值,因为正负的问题已经处理过了;
    • 当系数不等于 1 ,直接输出这个数;
    • 但是当系数为 ,且是最后⼀项的时候,这个 也是需要输出的;其余情况下的 不需要输出。
  • 处理「次数」:
    • 次数大于 1 ,输出 “x^” + 对应的次数;
    • 次数等于 1 ,输出 “x”;
    • 次数小于 1 ,什么也不输出。

对应到代码:

//处理系数 if(a==0) continue;if(a>0){if(i!=n) cout<<'+';}else cout<<'-';a = abs(a);if(a!=1||(a==1&&i==0)) cout<<a;//处理次数 if(i == 0) continue;else if(i == 1) cout<<'x';else cout<<"x^"<<i;

代码实现

#include <iostream>
using namespace std;
#include <cmath>int main()
{int n; cin>>n;for(int i = n;i>=0;i--){int a; cin>>a;//处理系数 if(a==0) continue;if(a>0){if(i!=n) cout<<'+';}else cout<<'-';a = abs(a);if(a!=1||(a==1&&i==0)) cout<<a;//处理次数 if(i == 0) continue;else if(i == 1) cout<<'x';else cout<<"x^"<<i;}return 0;
}

2.P5731 【深基5.习6】蛇形方阵 - 洛谷

image-20250303150430129

题目解析

本题是通过模拟运用数组来模拟实现蛇形方阵的题目,通过输入数据n来模拟实现要求

算法原理

对于方阵类的题目我们可以用两个直角坐标系来实现题目要求:

image-20250303163946804

这样通过数组来模拟方向我们直接可以对其进行填数

int x[] = {0,1,0,-1};
int y[] = {1,0,-1,0};
int pos;//创建数组存放值
const int N = 10;
int ret[N][N];int main()
{for(int i = 1; i<=n*n;i++){ret[a][b] = i;//先判断是否越界int p = a + x[pos], q = b + y[pos];if(p>n||q>n||q<1||ret[p][q]!=0) ++pos%=4;//a b更正方向a += x[pos];b += y[pos];}
}

代码实现

#include <iostream>
using namespace std;//通过数组来模拟行进方向 
int x[] = {0,1,0,-1};
int y[] = {1,0,-1,0};
int pos;//创建数组存放值
const int N = 10;
int ret[N][N];int main()
{int n; cin>>n;int a = 1, b = 1;for(int i = 1; i<=n*n;i++){ret[a][b] = i;int p = a + x[pos], q = b + y[pos];//判断是否越界if(p>n||q>n||q<1||ret[p][q]!=0) ++pos%=4;a += x[pos];b += y[pos];}//打印数组for(int i = 1; i<=n;i++) {for(int j = 1;j<=n;j++){printf("%3d",ret[i][j]);}cout<<endl;}return 0;}                                                                                            

3.[P1098 NOIP 2007 提高组] 字符串的展开 - 洛谷

image-20250303160316175

算法原理

题目描述过多,可以先写主要逻辑,中间一些内容可以用函数代替

基本逻辑:

int main()
{cin>>p1>>p2>>p3>>s;for(int i = 0;i<s.size();i++){char ch = s[i];//判断逻辑if(ch!='-'||ch==0||ch==s.size()-1) ret+=ch;else{char left = s[i-1];char right = s[i+1];//判断是数字还是字母if((islet(left)&&islet(right)&&left<right)||(isdig(left)&&isdig(right)&&left<right)){add(left,right);//题目实现的主要函数}else{ret+=ch;}}}cout<<ret;
}

将中间部分判断是数字还是字母的函数写出来

bool islet(char ch)
{return ch>='a'&&ch<='z';
}
bool isdig(char ch)
{return ch>='0'&&ch<='9';
}

最后再将题目要求的写出来,其中

  1. p1使用大小写字符之间相差32的特性即可完成
  2. p2直接使用循环即可完成
  3. p3使用reverse函数,要注意包含头文件<algorithm>
void add(char left,char right)
{string t;for(char i = left+1;i<right;i++){char ch = i;if(p1==2&&islet(ch)) ch-=32;else if(p1==3) ch='*';for(int j = 0;j<p2;j++){t += ch;}}if(p3==2) reverse(t.begin(),t.end());ret+=t;
}

代码实现

#include <iostream>
#include <algorithm>
using namespace std;
string ret,s;
int p1,p2,p3;bool islet(char ch)
{return ch>='a'&&ch<='z';
}
bool isdig(char ch)
{return ch>='0'&&ch<='9';
}
//程序主逻辑
void add(char left,char right)
{string t;for(char i = left+1;i<right;i++){char ch = i;if(p1==2&&islet(ch)) ch-=32;else if(p1==3) ch='*';for(int j = 0;j<p2;j++){t += ch;}}if(p3==2) reverse(t.begin(),t.end());ret+=t;
}int main()
{cin>>p1>>p2>>p3>>s;for(int i = 0;i<s.size();i++){char ch = s[i];//判断逻辑if(ch!='-'||ch==0||ch==s.size()-1) ret+=ch;else{char left = s[i-1];char right = s[i+1];if((islet(left)&&islet(right)&&left<right)||(isdig(left)&&isdig(right)&&left<right)){add(left,right);}else{ret+=ch;}}}cout<<ret;
}

总结这类题目要求分类详细,判断时要注意越界情况

http://www.dtcms.com/wzjs/17608.html

相关文章:

  • 网站建设 迅雷下载怎么开设自己的网站
  • 国人在线做网站如何设计推广方案
  • 旅游便宜网站建设信息流优化师证书
  • 建设投注网站百度seo插件
  • 做网站页面一般设置多大尺寸网络推广网站
  • 做一个网站需要什么上海seo推广公司
  • 学校网站建设市场seo店铺描述
  • 苏州市吴江太湖新城建设局网站舆情监测分析系统
  • 企业门户网站免费模板网站制作多少钱一个
  • 网络 企业网站网络推广外包怎么接单
  • 武钢建工集团建设分公司网站营销活动方案
  • 广州网站设计公司兴田德润在那里广告联盟平台挂机赚钱
  • 学校网页制作模板衡水seo排名
  • 柯桥做网站哪家好站长之家关键词挖掘工具
  • 国外对旅游网站建设的现状北京seo外包
  • 做医学期刊杂志网站深圳网站优化网站
  • 动易网站开发宁波seo网站排名
  • 河南专业网站建设公司推荐宁波seo优化服务
  • 网站建设心得体会及总结四年级小新闻50字左右
  • 外贸型网站建设公司营销推广是什么意思
  • 合浦建设局网站网络销售新手入门
  • 富阳房产网安徽百度seo教程
  • 健身器材 网站模版全网营销推广公司
  • 怎么做展示型网站品牌营销做得好的品牌有哪些
  • 个人申请网站网络推广是什么职位
  • 在线设计外卖平台店招seo优化基础教程pdf
  • 做网站还是微信小程序百度登录首页
  • 广东湛江怎么做网站教程泰州网站建设优化
  • html基础标签seo学途论坛网
  • 商会网站制作网站流量查询工具