洛谷普及组P1044栈,题目讲解(无数论基础,纯打表找规律)

[NOIP2003 普及组] 栈 - 洛谷

我先写了个打表的代码,写了一个小时,o(╥﹏╥)o只能说我真不擅长dfs。

int n;
std::unordered_map<std::string, int>map;
void dfs(std::vector<int>&a, int step,std::stack<int>p, std::string s) {if (step == n + 1) {if (map.find(s) == map.end() && s.size() == n) {map[s] = 1;return;}else {while (!p.empty()) {s.push_back('0'+p.top());p.pop();}if (map.find(s) == map.end()) {map[s] = 1;return;}return;}}for (int i = 1; i <= 2; i++) {if (i == 1&&!p.empty()) {s.push_back('0'+p.top());int x = p.top();p.pop();dfs(a,step, p, s);s.pop_back();p.push(x);}else if (i == 2) {p.push(a[step]);dfs(a,step + 1, p, s);s.push_back('0'+p.top());p.pop();dfs(a,step + 1, p, s);s.pop_back();}}
}
int main() {std::cin >> n;std::vector<int>a(n + 1);for (int i = 1; i <= n; i++)a[i] = i;std::stack<int>p;std::string s;dfs(a,1,p,s);std::cout << map.size() << '\n';std::vector<std::string>c(map.size());int i = 0;for (auto x : map) {c[i] = x.first;i++;}std::sort(c.begin(), c.end());for (int i = 0; i < c.size(); i++)std::cout << c[i] << '\n';return 0;
}

然后我们可以发现

所以可以得到以下代码

#include<iostream>
#include<vector>using i64 = long long;
i64 a[19], b[19],sum,sum1,c[19];
int main() {a[1] = 1;i64 n,m=0,p=0;std::cin >> n;c[1] = 1; c[2] = 2; sum = 2,a[1]=1,a[2]=1;for (int i = 3; i <= n; i++) {i & 1 ? (b[1] = sum, b[2] = sum ,sum1=sum*2): (a[1] = sum1, a[2] = sum1,sum=sum1*2);if (i & 1) {for (int j = 3; j <= i; j++) {b[j] = sum - a[j - 2];sum -= a[j - 2];sum1 += b[j];}c[i] = sum1;}else {for (int j = 3; j <= i; j++) {a[j] = sum1 - b[j - 2];sum1 -= b[j - 2];sum += a[j];}c[i] = sum;}}std::cout << c[n] << '\n';return 0;
}

 这里模拟了一下缓冲区交换,因为每次都要更改前n项。

不想讲了,有时间把解析补全。

花了我一晚上,这普及有点东西,只能说我太菜了。

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

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

相关文章

自动化测试中,如何增加失败重试机制!

01、前言 在执行自动化测试用例时&#xff0c;会发现有时候用例失败并非代码问题&#xff0c;而是由于服务正在发版&#xff0c;导致请求失败&#xff0c;从而降低了自动化用例的稳定性&#xff0c;最后还要花时间定位到底是自身case的原因还是业务逻辑问题&#xff0c;还是其…

openGauss学习笔记-184 openGauss 数据库运维-升级-升级验证

文章目录 openGauss学习笔记-184 openGauss 数据库运维-升级-升级验证184.1 验证项目的检查表184.2 升级版本查询184.2.1 验证步骤 184.3 检查升级数据库状态184.3.1 验证步骤 openGauss学习笔记-184 openGauss 数据库运维-升级-升级验证 本章介绍升级完成后的验证操作。给出验…

【含ROM】小米刷机之k30pro刷澎湃系统

本教程以我的k30 pro 变焦为例。(同k30 pro) 目录 [ - ] 解bl锁 [ - ] 下载rom [ - ] 开始刷机 [ - ] k30 pro 澎湃下载链接 [ - ] 其他相关资源下载链接 一. 解bl锁 百度一下 小米解bl锁 有很多教程。 建议参考小米社区官网的解锁教程&#xff1a; https://web.vip.miui.co…

低代码平台在自动驾驶系统开发中的应用

自动驾驶技术的发展正在为交通领域带来革命性的变化。其中关键的一环是自动驾驶系统的开发&#xff0c;该过程通常需要大量的编程工作和复杂的算法。然而&#xff0c;随着低代码技术的崛起&#xff0c;开发者能够大幅简化自动驾驶系统的开发过程&#xff0c;为了降低开发难度和…

SQL必知必会笔记(5~8章)

第五章 高级数据过滤 本章示例表为transcript成绩表&#xff0c;数据库软件选用SQLITE3&#xff0c;具体如下 1、高级过滤也是通过where条件子句实现&#xff0c;辅以and、or、in、not进行实现 2、and语句&#xff1a;and连接的多个条件为与的关系&#xff0c;例如 SELECT * FR…

html中的form表单以及相关控件input、文本域、下拉select等等的详细解释 ,点赞加关注持续更新~

文章目录 表单创建表单forminput 标签input标签的value属性设置input标签格式单选框多选框上传文件下拉菜单文本域设置文本域格式label 标签按钮 表单 作用&#xff1a;收集用户信息。 使用场景&#xff1a; 登录页面注册页面搜索区域 创建表单form <form action".…

在SpringBoot中重试调用第三方API

1引言 在实际的应用中&#xff0c;我们经常需要调用第三方API来获取数据或执行某些操作。然而&#xff0c;由于网络不稳定、第三方服务异常等原因&#xff0c;API调用可能会失败。为了提高系统的稳定性和可靠性&#xff0c;我们通常会考虑实现重试机制。 2重试机制的必要性 …

SpringCloudAlibaba之Gateway

1、简介 网关是系统唯一对外的入口&#xff0c;介于客户端与服务器端之间&#xff0c;用于对请求进行鉴权、限流、路由、监控等功能。 2、Gateway主要功能 2.1、route 路由 路由是网关的最基本组成&#xff0c;由一个路由 id、一个目标地址 url&#xff0c;一组断言工厂及一…

静态S5的常见问题与解决方法

静态S5作为一款功能强大的数据分析工具&#xff0c;被广泛应用于各个行业。然而&#xff0c;在使用过程中&#xff0c;用户可能会遇到一些常见问题。本文将针对这些问题提供相应的解决方法&#xff0c;帮助用户更好地使用静态S5。 一、数据导入问题 在导入数据时&#xff0c;…

RocketMQ源码 创建Topic流程源码分析

前言 MQAdminImpl MQ管理组件提供了大量对mq进行管理的工具&#xff0c;其中一个就是创建Topic。它内部实现是通过 mqClient工具从 NameServer拉取当前 Topic对应的路由元数据信息&#xff0c;解析遍历和当前topic有关的 broker高可用分组集合&#xff0c;找到分组中的 master…

老胡的周刊(第122期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 movie-web[2] 开源可自部署的简约在线电影搜…

JAVA中对登录进行IP限制

一、获取登录用户的网络IP public String getIpAddress(HttpServletRequest request) {String ipAddress request.getHeader("x-forwarded-for");if (ipAddress null || ipAddress.length() 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress …