计算九连环需要多少步解下来的方法

python九连环递归 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma... 阅读详情

根据九连环的玩法我们可以知道,面对一个所有环都处于“下环“”的状态,如果我们想上前 n n n 环,那么我们首先要先上前 n − 1 n-1 n−1 环,然后下前 n − 2 n-2 n−2 环,然后上第 n n n 环,然后上前 n − 2 n-2 n−2 环。因此,如果我们把上第 n n n 环所需步数记为 a n a_n an​ ,那么数列 a n a_n an​满足:

a n = a n − 1 + 2 a n − 2 + 1 (1) a_n=a_{n-1}+2a_{n-2}+1\tag{1} an​=an−1​+2an−2​+1(1)

这里我们认为我们每次只能操作一个环,即不能同时上下前两个环

利用该递推公式编写 python 程序,可以很轻松的计算得到 a n = 341 a_n=341 an​=341

def func(n):
    if n == 1:
        return 1
    elif n == 2:
        return 2
    else:
        return func(n-1) + 2*func(n-2)+1
res = func(9)
print(res)

那么如何得到 a n a_n an​ 的通项公式呢,在广泛查阅资料后得知, a n a_n an​ 属于二阶线性常系数非齐次递推关系。可以通过公式计算得到。

具体计算方法可跳转到文末的参考资料

最终计算结果为
a n = − 1 6 ( − 1 ) n + 2 3 2 n − 1 2 a_n=-\frac{1}{6}(-1)^n+\frac{2}{3}2^n-\frac{1}{2} an​=−61​(−1)n+32​2n−21​

同样得到 a 9 = 341 a_9=341 a9​=341 与 python 计算结果一致。


参考资料:

百度文库–2.4 线性常系数非齐次递推关系

优快云–python实现斐波那契数列

python解下九连环 非常简单的利用python解开九连环,直接按照步骤即可解开 立即下载

相关推荐

九连环源代码

C语言源代码,自己编译的,希望帮助改进与交流

6760: 九连环(大数)

6760: 九连环 http://exam.upc.edu.cn/problem.php?id=6760 时间限制: 1 Sec  内存限制: 128 MB 提交: 582  解决: 92 [提交] [状态] [讨论版] [命题人:admin] 题目描述 九连环是一种源于中国的传统智力游戏。如图所示,九个圆环套在一把“剑”上,并且互相牵连。游戏的目标是把九个圆环从“剑”上卸下。 圆环...

一只秀逗__的博客 607

九连环模拟程序

采用递归算法模拟九连环游戏的运行过程,并计算所需步数。IDE: VS2005 C++

九连环_装错信封问题及九连环问题的递推关系式以及通项公式的推导(尤其是高中生一定要读)...

错装信封问题的递推关系式本人在高中时已经自悟出来,但是通项公式没有自悟出来,通项公式是一六年时和李化雨兄弟探讨数学时从他那里学来的,不过后来又经过仔细思考,发现通项公式的推导过程中不除以阶乘也一样可以推出同样的结果,只不过不如除以阶乘以后看起来更直观。李化雨兄弟做高中奥数题是个高手,几乎是信手拈来。九连环问题其实更加简单,不过是一个很简单的线性递推关系,只不过比高中常见的数列问题更复杂一步,它可以...

weixin_33971463的博客 1548

相机图像质量研究(15)常见问题总结:光学结构对成像的影响--暗角

老式相机的暗角往往比较明显,周围一圈能够明显感觉到亮度下降的很多,当然有些电源模仿手持相机的摄影效果,也能看到周围明显的亮度下降。一、

xiaoshixiu的专栏 1123

应用软件——Altium Designer 19 Gerber/坐标文件

如何输出Gerber文件 步骤如下: 打开需要输出的PCB文件 2. 设置原点坐标 3. 打开Gerber Files 选项,File–>Fabrication Opuputs–>Gerber Files。 4. General参数设置。 用于指定输出Gerber文件中使用的单位(Units)和格式(Format)。单位可以是公制(Millimeters)和英制(Inches);格式栏中2:3,2:4,2:5代表文件中使用的不同数据精度,其中2:3表示数据含2位整数3位小数;相应的,另外两个分

染血黑兔的博客 7203

编程解九连环

程序解九连环

ljcyu的博客 743

ANSYS APDL 后处理:用*GET和ETABLE命令把节点/单元应力结果导出到TXT文件(附完整命令流)

本文详细介绍了在ANSYS APDL中使用*GET和ETABLE命令导出节点和单元应力数据到TXT文件的完整方案。通过节点解和单元解的核心逻辑分析,提供了从基础到进阶的数据导出方法,包括节点应力、单元应力数据的提取与格式化输出,以及高级技巧如选择性导出与数据过滤。帮助工程师高效完成有限元分析后处理工作。

weixin_26805597的博客 631

新千题计划 11#:[CQOI 2018] 九连环

递推。 欲解 n 连环,需要 1)解 n - 1 连环,即 111…10;2)将前 n - 2 位的 1 视为 0,反向解 n - 2 连环,即 000…010;3)将末位变为 1,即 000…011;4)解 n - 2 连环。故递推式为 a_n = a_{n - 1} + 2a_{n - 2} + 1,显然a_1 = 1, a_2 = 2。.

涉 312

写给音响工程师的科普文章(二)——从模电角度去了解调音台话放

    上一篇讲到调音台第一级放大电路为差分放大器,关于差分放大器的基础知识可以参考以下资料:https://wenku.baidu.com/view/e6a46aaa2af90242a995e537 在教材中的差分放大器基本形式是这样子的,在实际电路中把RE电阻换成两个2倍RE,于是变成这样 然后我们现在来对比调音台中的差分放大器和教材中的有什么区别,我就拿yamaha 01V 96来说...

huanghaoAudio的博客 7702

IBIS模型中的Pullup和Pulldown曲线详解:如何避免信号完整性设计中的常见错误

本文深入解析IBIS模型中Pullup和Pulldown曲线的关键作用,揭示其在信号完整性设计中的黄金法则。通过详细分析曲线特性、常见误区及验证方法,帮助工程师避免设计错误,优化高速PCB设计。文章还展示了曲线数据在动态终端匹配、串扰预测和电源完整性分析中的高级应用,提升设计效率和可靠性。

weixin_30275415的博客 451

九连环的玩法共有多少步

少时玩的九连环,一直在想共需要多少步骤,当时想大概是九九八十一步吧;一直悬而未解;今天“文心一言”给出了答案;编程模拟了过程;

hanqing1972的博客 1580

Android-Zygote进程的诞生—从init到Zygote启动

Android Zygote进程启动流程解析 Android系统的Zygote进程是所有应用进程的父进程,由init进程创建。启动流程分为: 内核阶段:加载init进程(PID=1) init进程阶段: 挂载基础文件系统(tmpfs、proc等) 设置SELinux安全策略 解析init.rc配置文件 Zygote启动:init进程通过app_process启动Zygote,预加载系统资源 SystemServer:Zygote fork出系统服务进程 关键点: init是用户空间第一个进程......

保持专注,保持热爱 637

九连环

许多人一定很熟悉九连环(如下图) 九个环被串在一起,操作规则如下:第一个(右边)环可以任意装卸,如果第k个环没有被卸掉,而第k个环前边(右边)的所有环都被卸掉,则第k+1个环(第k个环左边的环)可以任意装卸(如果存在的话)。 用0表示此换被卸掉,1表示此环没有被卸掉,则九连环的每个状态可以用一个长度为9的二进制串来表示,如:111111001经过一次操作可以变成111111000,也可以变...

nameofcsdn的博客 1万+

在WSL2中配置代理(Windows)

通过按照上述步骤在WSL2中配置代理,我们可以轻松地在Windows子系统Linux中使用代理服务器访问互联网。请确保提供正确的代理服务器地址和端口号,并根据实际情况进行修改。在WSL2中使用代理是一个常见的需求,它允许我们在Windows子系统Linux中通过代理服务器访问互联网。本文将详细介绍如何在WSL2中配置代理,并提供相应的源代码示例。如果返回的IP地址与代理服务器所在地不同,说明代理正常工作。希望本文能对你有所帮助!如有其他问题,请随时向我提问。替换为实际的代理服务器地址和端口号。

FcUnity的博客 4355

MIKE 21 教程 2.9 初始条件(Initial Conditions),边界条件Boundary Conditions),解耦(Decoupling)

本节讲解初始条件与边界条件的设置。这两个模块如设置有误则极易出现模型崩溃。

Hello Word 4801

九连环的解法(收集)

今天星期天看电视呢,看的是一个叫《刁蛮公主》的电视剧,有点意思,里边有一段是和九连环有关的,让我有了一点兴趣,九连环以前在一个朋友家里看到过一个,当时看了一下,认为有点难度,也没有兴趣去研究,今天我也没有兴趣去自己去研究那个东西到底要怎么解,所以在网上找了一下解法,希望对像我一样不爱动脑子的人有帮助。         九连环历史非常悠久,据说发明于战国时代。它是人类所发明的最奥妙的玩具之一。宋

Mage的专栏 9375

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python绘制九九乘法表

主要涉及的知识点是while循环的嵌套,分析一下行数和列数得知应该用两个while循环。一共是九行,那么大循环 i 就设置为9次;每行的列数等于行数,那么内循环 j 就设置成 j

a1561169148的博客 408

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

HDU2842-Chinese Rings(递推+矩阵快速幂)

题目链接 题意:求出最少步骤解出九连环。取出第k个的条件是,k-2个已被取出,k-1个仍在支架上。 思路:想必九连环都玩过吧,其实最少步骤就是从最后一个环开始,向前一直取出来就行了。所以假设取出前n个环所需要的步骤为f(n),那么在此之前f(n - 2)要被取出,再加上1,即第n个环被取出,所以只剩下第n-1环没被取出,那么我们将前n-2环再套上去(套上去和取下来的步骤是一

懒人一枚。 1079

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

九连环的递归解法

最近在重温数据结构和算法分析。刚好手头有个九连环,就想着用递归写写个九连环的解法。九连环解法的基本原则: 第一个环在任何时候都是可以自由上下的 如果希望第 n 个环能自由上下,那么 – 第 n-1 个环必须在杆上 – 前面第 n-2 个环全部不在杆上 这三个简单规则就构成了递归解法的基础。 %matplotlib qt import matplotlib.pyplot as plt from ...

chf的博客 2992

九连环 ← 递归

九连环游戏的历史非常悠久,据说起源于战国时期。 九连环由九个相互连接的环组成,这九个环套在一个中空的长形柄中。 九连环的玩法是要将这九个环从柄上解下来。解下所有九个环需要解341步,因此人们需要有耐心。

hnjzsyjyj的专栏 3467

P1805 关灯 题解

很明显的递推题,但是高精度。

luogu_553625的博客 254

九连环(“华为杯”山东理工大学第十一届ACM程序设计竞赛(正式赛)网络同步赛)

Problem Description 不知道大家有没有玩过一个叫做 九连环 的玩具,如下图所示。 如果你不了解九连环,那玄黄就带你领略九连环的奥妙: 九连环是我国传统的民间智力玩具,玩具上面有九个连环套在杆上,目标就是通过一定的方式将九个连环从杆上全部取下来。 玩法是这样的: 1、对每个环,有2种操作:把这个环放到杆上或把这个环从杆上取下 2、你可以随意的对第1个环进行操作 3、如果...

ZCY的博客 820

九连环问题解决

14、九连环。九连环的初始状态是九个环全部被安装在一个狭长的“梭”上,这          个初始状态可以表示为:(1)(2)(3)(4)(5)(6)(7)(8)(9), 如果终止状态是将九个环全部拆卸下来。那么终止状态可以表示为:【1】【2】【3】【4】【5】【6】【7】【8】【9】。编写一段程序,输出拆卸九连环(从初始状态到终止状态)的操作过程,要求程序按照拆卸的步骤,顺序地输

地轴始终旋转 4654

九连环-递归解法

//求取下n环和放上n环的步数int ans; //规则一:第一环可以在任何时候放上或取下环柄。 //规则二:只有紧跟在领头环后的环可以放上或取下环柄。(领头环是套在柄上的最前面的环 int DownRing(int); int UpRing(int); int DownRing(int n) { int res = 0; if(n == 1) ...

weixin_30362801的博客 632
上一篇: 层次分析法(附实例)
下一篇: stolz 定理
陌雨’
博客等级 码龄7年 1378粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值