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

洛谷——P2437 蜜蜂路线

P2437 蜜蜂路线 - 洛谷

题目描述

一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房 m 开始爬到蜂房 n,m<n,有多少种爬行路线?(备注:题面有误,右上角应为 n−1)

输入格式

输入 m,n 的值

输出格式

爬行有多少种路线

最初的思路,我认为就是一个递推dp[i] = dp[i - 1] + dp[i - 2]。于是代码就有了

#include <iostream>
using namespace std;
int main() {int n, m;cin >> n >> m;int dp[m + 1] = {};dp[1] = 0;dp[2] = 1;for(int i = 3; i < m + 1; i ++) {dp[i] = dp[i - 1] + dp[i - 2];}cout << dp[m] - dp[n];return 0;
}

结果案例一个没过。后来感觉是高精度的问题于是代码又来了

#include <iostream>
#include <vector>
using namespace std;
typedef long long LL;
vector<int> ans;
void add(vector<int>& a, vector<int>& b) {int x = 0;for(int i = 0; i < a.size(); i ++) {x = x + a[i] + b[i];a[i] = x % 10;x = x / 10;}for(int i = a.size(); i < b.size(); i ++){x = x + b[i];a.push_back(x % 10);x = x / 10;}if(x) {a.push_back(x % 10);x = x / 10;}vector<int> c = a;a = b;b = c;
}
void cul(vector<int> & a, vector<int> & b) {for(int i = 0; i < b.size(); i ++) {int t = a[i] - b[i];if(t < 0) {t += 10;a[i + 1] -= 1;}ans.push_back(t);}for(int i = b.size(); i < a.size(); i ++) {ans.push_back(a[i]);}
}
int main() {int n, m;cin >> n >> m;vector<int> a, b;vector<int> M;a.push_back(1);b.push_back(2);if(n < 4) {M.push_back(n - 1);}for(int i = 4; i < m + 1; i ++) {add(a, b);if(i == n) M = b;}cul(b, M);for(int i = ans.size() - 1; i >= 0; i --) cout << ans[i];return 0;
}

过了几个案例但是还有错误,继续改发现在斐波那契数列中从a点到b点(a < b)的方案数目等于dp[b - a]的值所以代码就是

#include <iostream>
#include <vector>
using namespace std;
typedef long long LL;
void add(vector<int>& a, vector<int>& b) {int x = 0;for(int i = 0; i < a.size(); i ++) {x = x + a[i] + b[i];a[i] = x % 10;x = x / 10;}for(int i = a.size(); i < b.size(); i ++){x = x + b[i];a.push_back(x % 10);x = x / 10;}if(x) {a.push_back(x % 10);x = x / 10;}vector<int> c = a;a = b;b = c;
}int main() {int n, m;cin >> n >> m;int k = m - n;vector<int> a, b;a.push_back(1);b.push_back(2);if(k == 1) {cout << 1 << '\n';return 0;}if(k == 2) {cout << 2 << '\n';return 0;}for(int i = 3; i < k + 1; i ++) {add(a, b);}for(int i = b.size() - 1; i >= 0; i --) cout << b[i];return 0;
}

http://www.dtcms.com/a/434913.html

相关文章:

  • 网页制作网站花店水头网站建设
  • 在网站上做承诺书厦门在线制作网站
  • 国家认可的赚钱平台东莞seo网络推广专
  • 安装网站wordpress加个微信登录
  • 在线音频三选一强制选择测试(3-AFC)
  • 高斯消元矩阵
  • 吉林网站优化路得威网站谁做的
  • 神经网络之理解温度对Softmax的影响
  • 做视频怎么去除网站个人网站代做
  • Linux中信号量semaphore的实现
  • 广州网站推广公司建筑工程公司是干嘛的
  • ESP32驱动DHT11温湿度传感器详解
  • flask做的网站 网址做网站推广有什么升职空间
  • 网站上线过程做美团网站多少钱
  • 微信分享网站短链接怎么做公司的介绍怎么写
  • 算法分析:时间和空间复杂度
  • 第6章串数组:稀疏矩阵的十字链表表示
  • 【STM32项目开源】基于STM32的工地环境监测系统
  • 手机登录网站怎么建设如何做一个网站代码
  • 解决django.db.utils.OperationalError: attempt to write a readonly database错误
  • CAN-超时计数器(Timeout Counter)
  • 网站建设策划有哪些建设网站用英文怎么说
  • 报告派研读:2025年光学光电子深度报告
  • 技术演进中的开发沉思-121Linux命令篇:系统设置命令(下)
  • 深入理解 JavaScript 闭包与作用域
  • 【操作系统-Day 38】LRU的完美替身:深入解析时钟(Clock)页面置换算法
  • Linux 入门指南:从零掌握基础文件与目录操作命令
  • 高职院校高水平专业建设网站wordpress的windows
  • 网络原理-HTTPS
  • 马鞍山网站建设文如何查网站注册信息