【C语言】【牛客】BC161 大吉大利,今晚吃鸡

文章目录

  • 题目
  • 思路
  • 代码呈现


题目

链接: link
在这里插入图片描述

思路

这道题的本质其实不是考察C语言的运用,而是来考察我们对通项公式的总结。

我们可以看一下下面这道汉诺塔问题

相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

再来回看一下本题,我们可以发现本质上其实差不多,不过汉诺塔问题中A,B,C三根柱子可随意选择,但是牛客网这道题只能在相邻的两根柱子里交换

接下来我来分析下牛客网这道题怎么做

  1. 我们假设将n块圆盘都从A柱移动到C柱上需要F(n)次,那将上面n-1块圆盘从A柱移动到C柱就需要F(n-1)次
  2. 之后我们把最大的圆盘移到B柱,需要1次
  3. 再把n-1块圆盘从C柱移动到A柱就需要F(n-1)次
  4. 然后再把最大的圆盘移到C柱,需要1次
  5. 最后把n-1块圆盘从A柱移动到C柱就需要F(n-1)次

加起来我们可以得到这样的一个等式F(n)=3F(n-1)+2
两边都加上1,我们可以等到公比3,再带入n=1时F(1)+1=3
就得到通项公式F(n)=3n -1

这样都得出来了,那汉诺塔问题应该也是迎刃而解了

所以我们在代码可以直接输出3n -1,但是这样或许不适合维护,比如,突然允许了三根柱子任意交换,虽说我们可以直接把公式改成2n -1,可能会不便于理解,为了能使自己和别人能够更好的理解这道题的本质和处理思想,我们不妨直接用递归的方法,把这道题表现出来

代码呈现

#include <stdio.h>int MiniStep(int x) {int ans = 0;if (x == 1)ans = 2;elseans = 3 * MiniStep(x - 1) + 2;return ans;
}int main() {int n;while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case// 64 位输出请用 printf("%lld") toint ret = MiniStep(n);printf("%d\n", ret);}return 0;
}

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

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

相关文章

【全网最详细】ComfyUI下,Insightface安装指南-聚梦小课堂

&#x1f96e;背景 ComfyUI下使用IP-adapter下的faceID模型的时候&#xff0c;大家可能会遇到如下错误&#xff1a; Error occurred when executing InsightFaceLoader: No module named insightface File "F:\ComfyUI-aki\execution.py", line 151, in recursive_…

VUE3 自定义指令

概念 除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令 (Custom Directives)。自定义指令主要是为了重用涉及普通元素的底层 DOM 访问的逻辑。 指令钩子 一个指令的定义对象可以提供几种钩子函数 (都是可选的)&#xff1a;示…

MySQL调优之SQL语句

1 慢 SQL 语句的几种常见诱因 1.1 无索引、索引失效导致慢查询 如果在一张几千万数据的表中以一个没有索引的列作为查询条件&#xff0c;大部分情况下查询会非常耗时&#xff0c;这种查询毫无疑问是一个慢 SQL 查询。所以对于大数据量的查询&#xff0c;我们需要建立适合的索…

凝思操作系统离线安装mysql和node

PS&#xff1a;下面这就是国产凝思的界面,测试版本是V6.0.80&#xff0c;第一次听说这种系统&#xff0c;于是去官网下载部署包&#xff0c;下面是地址 注意:这个系统如果没有激活&#xff0c;ip都不会有&#xff0c;这样文件都不能传到服务器&#xff0c;xshell这些工具都连不…

自托管状态页面工具Kener

什么是 Kener &#xff1f; Kener 是开源的 Node.js 状态页面工具&#xff0c;旨在轻松监控服务和处理事故。它提供了一个时尚且用户友好的界面&#xff0c;简化了对服务中断的跟踪&#xff0c;并改善了我们在事故期间的沟通方式。而最好的部分是&#xff0c;Kener 与 GitHub 无…

hosts文件丢失了怎么办?

hosts文件的位置&#xff1a;C:\Windows\System32\drivers\etc 丢失了恢复的方法&#xff1a; 在“管理员&#xff1a;命令提示符中输入&#xff1a; &#xff08;winR 然后cmd&#xff09; for /f %P in (dir %windir%\WinSxS\hosts /b /s) do copy %P %windir%\System32\d…

天题赛座位分配(pta团体天梯题c++简易版)

天梯赛每年有大量参赛队员&#xff0c;要保证同一所学校的所有队员都不能相邻&#xff0c;分配座位就成为一件比较麻烦的事情。为此我们制定如下策略&#xff1a;假设某赛场有 N 所学校参赛&#xff0c;第 i 所学校有 M[i] 支队伍&#xff0c;每队 10 位参赛选手。令每校选手排…

超实用!免费软件站大盘点,总有一款适合你

相信用Mac电脑的同学都知道一个网站MacWK&#xff0c;可以白嫖几乎所有常用软件&#xff0c;不用付费&#xff0c;但不好的消息是在2022年10月宣布关站&#xff0c;小编从此走上了开源免费的道路&#xff0c;尽管不太好用&#xff0c;奈何口袋木有钱&#xff0c;经过小编的不断…

找出字符串中第一个匹配项的下标-力扣

纯自己手写 int strStr(char* haystack, char* needle) {int haylenstrlen(haystack);int nelenstrlen(needle);if(strlen(haystack)<strlen(needle)) return -1;int slow0;//用于标记从haystack哪个字符开始比较int fast0;//用于标记haystack中正在进行比较的字符int ne…

力扣日记3.18-【贪心算法篇】122. 买卖股票的最佳时机 II

力扣日记&#xff1a;【贪心算法篇】122. 买卖股票的最佳时机 II 日期&#xff1a;2024.3.18 参考&#xff1a;代码随想录、力扣 122. 买卖股票的最佳时机 II 题目描述 难度&#xff1a;中等 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。…

AI大模型额外学习一:斯坦福AI西部世界小镇笔记(包括部署和源码分析)

文章目录 一、简单介绍1&#xff09;项目代码介绍2&#xff09;重新播放模拟3&#xff09;适当修改分叉模拟 二、部署斯坦福小镇Demo1&#xff09;准备工作2&#xff09;解决遇到的bug3&#xff09;启动服务器和前端 三、源码剖析1&#xff09;主题顺序 github链接 一、简单介…

08|记忆:通过Memory记住客户上次买花时的对话细节

无论是LLM还是代理都是无状态的&#xff0c;每次模型的调用都是独立于其他交互的。也就是说&#xff0c;我们每次通过API开始和大语言模型展开一次新的对话&#xff0c;它都不知道你其实昨天或者前天曾经和它聊过天了。 使用ConversationChain from langchain import OpenAI…

1.gradle编译和运行

1.在Windows 项目的根目录下使用.\gradlew.bat build命令进行编译。 如果出错的原因是连接超时&#xff1a; Exception in thread “main” java.io.IOException: Downloading from https://services.gradle.org/distributions/gradle-8.6-bin.zip failed: timeout (10000ms) a…

【华为OD机试】找座位【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 在一个大型体育场内举办了一场大型活动,由于疫情防控的需要, 要求每位观众的必须间隔至少一个空位才允许落座。 现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出, 在不移…

嵌入式会越来越卷吗?

嵌入式会越来越卷吗? 当谈及嵌入式系统时&#xff0c;我们探究的不仅是一种科技&#xff0c;更是一个日益多元与普及的趋势。嵌入式系统&#xff0c;作为一种融入更大系统中的计算机硬件和软件&#xff0c;旨在执行特定功能或任务。但这个看似特定的系统概念&#xff0c;却在发…

黑马程序员——javase进阶——day09——线程安全,死锁,状态,通讯,线程池

目录&#xff1a; 线程安全 线程安全产生的原因线程的同步同步代码块同步方法Lock锁线程死锁 概述:产生条件:代码实践线程的状态线程通信线程池 线程使用存在的问题线程池的介绍线程池使用的大致流程线程池的好处Java提供好的线程池线程池处理Runnable任务线程池处理Callable任…

LeetCode刷题记录:(11)组合(初识回溯算法)

leetcode传送通道 暂时记录&#xff0c;这篇没啥营养&#xff0c;不用看了 class Solution {List<List<Integer>> result new ArrayList<>(); // 存所有组合List<Integer> path new LinkedList<>(); //存每一个组合public List<List<Int…

世界第一个AI软件工程师问世!

2024年3月13日&#xff0c;科技公司Cognition推出了世界上第一位人工智能软件工程师Devin AI。这项创新有望利用人工智能编码和机器学习的力量加快发展。Devin AI不仅仅是帮助&#xff1b;它是一个成熟的队友&#xff0c;发挥智能编码自动化和自主人工智能编码的魔力&#xff0…

SQL注入无回显,利用DNSlog构造方式

没有回显的情况下&#xff0c;一般编写脚本&#xff0c;进行自动化注入。但与此同时&#xff0c;由于 防火墙的存在&#xff0c;容易被封禁 IP&#xff0c;可以尝试调整请求频率&#xff0c;有条件的使用代理池进行请求。 此时也可以使用 DNSlog 注入&#xff0c;原理就是把服…

salesforce生产环境如何删除触发器

由于生产环境不能直接删除触发器&#xff0c;所以需要在sandbox中先让触发器inactive再部署到生产环境&#xff0c;就可以让触发器失效了。