【C語言練習】漢諾塔

一、題目

介紹:漢諾塔(Tower of Hanoi),又稱河內塔,是一個源于印度古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。
游戲要求:
1、每次只能移動一個圓盤。
2、圓盤只能放置在比它大的圓盤上。
3、圓盤在新的柱子上也是從上到下、從小到大排列。

二、分析

假設n表示個圓盤個數,三根柱子分別用A,B,C進行表示,n個圓盤最初均放在A柱上,我們要將圓盤全部移到C柱上。
在這里插入圖片描述
n = 1時,我們只需要1步就能將圓盤移動到C柱:A —> C
在這里插入圖片描述
n = 2時,需要3步才能將圓盤移動到C柱:A —> B、A —> C、B —> C
在這里插入圖片描述
n = 3時,需要7步才能將圓盤移動到C柱:A —> C、A —> B、C —> B、A —> C、B —> A、B —> C、A —> C
在這里插入圖片描述
對于n個圓盤,我們可以參照3個盤子移動的情況,先將A柱上面的n - 1個圓盤通過C柱移動到B柱,剩下最大的那個圓盤直接移動到C柱,B柱上的圓盤通過A柱再移動到C柱上。其需要移動的次數為2^n-1次或者是n - 1個圓盤移動次數乘以2減1。(遞歸)
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
可以把問題看成是把大象塞進冰箱:①打開冰箱門;②把大象關進冰箱;③關上冰箱門

三、代碼實現

移動軌跡:

#include <stdio.h>void Move(char x, char y)
{printf("%c ——> %c ", x, y);//移動軌跡
}void Hanoi(int n, char A, char B, char C)
{	if(n ==1)Move(A, C);else{	Hanoi(n - 1, A, C, B);//上面n - 1個通過C柱移動到B柱Move(A, C);//底部最大圓盤直接移動到C柱Hanoi(n - 1, B, A, C);//n - 1個圓盤通過A柱移動到C柱}
}int main()
{int n = 0;scanf("%d", &n);Hanoi(n, 'A', 'B', 'C');//n個圓盤從A柱挪到C柱return 0;
}

運行結果:
在這里插入圖片描述
移動次數:

#include <stdio.h>int Hanoi(int n)
{if(n == 1)return 1;elsereturn 2 * Hanoi(n - 1) + 1;//移動次數是n - 1個圓盤移動次數乘2減1
}int main()
{int n = 0;scanf("%d", &n);int ret = Hanoi(n);printf("%d", ret);return 0;
}

運行結果:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/920196.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/920196.shtml
英文地址,請注明出處:http://en.pswp.cn/news/920196.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

隨機森林實戰:在鳶尾花數據集上與決策樹和邏輯斯蒂回歸進行對比

前言 集成學習通過組合多個模型的優勢&#xff0c;常能獲得比單一模型更優的性能&#xff0c;隨機森林便是其中的典型代表。它基于 Bagging 思想&#xff0c;通過對樣本和特征的雙重隨機采樣&#xff0c;構建多棵決策樹并綜合其結果&#xff0c;在降低過擬合風險的同時&#xf…

(計算機網絡)TCP 三握中第三次 ACK 丟失會發生什么?

在 TCP 的三次握手過程中&#xff0c;如果 第三次 ACK 丟失&#xff0c;TCP 是如何保證連接可靠建立的呢&#xff1f;1?? 場景說明第三次 ACK&#xff1a;客戶端發送給服務器的 ACK&#xff0c;確認服務器的 SYN-ACK。假設該 ACK 在網絡傳輸過程中丟失。2?? 客戶端狀態客戶…

容智Report Agent2.0重磅發布!重新定義企業數據分析AI時代

在數據成為生產要素之一的今天&#xff0c;很多企業依然面臨這樣的困境&#xff1a; 想要一份年度財務分析&#xff0c;財務團隊可能要忙半個月甚至一個月&#xff1b;想查一個業務指標&#xff0c;要先找出在哪個系統&#xff0c;再申請權限、寫SQL、調報表&#xff0c;折騰半…

高階數據結構---ST表

hello大家好&#xff0c;今天是2025年8月23日&#xff0c;我要來給大家分享的是一個高階數據結構---ST表。 一&#xff1a;引入 1.RMQ問題&#xff1a; 對于一個長度為 n 的序列&#xff0c;有 m 次查詢操作&#xff0c;每次查詢為一個區間 [l&#xff0c;r] 的最大值&#…

docker 安裝nacos(vL2.5.0)

查找nacos 的所需的鏡像版本 https://hub.docker.com/r/nacos/nacos-server/tags 拉取你所需的版本&#xff08;我們用v2.5.0&#xff09; docker pull nacos/nacos-server:v2.5.0 注意&#xff1a;因為我們需要掛載外配置文件 直接用volume 掛載目錄 缺少初始文件報錯 我們…

在github上通過dmca數字版權申訴侵權并刪除侵權倉庫

DMCA是什么&#xff1f; 《數字千年版權法案》&#xff08;DMCA&#xff09;為版權所有者&#xff08;包括軟件開發人員&#xff09;創建了一個標準化的流程&#xff0c;要求GitHub刪除侵權內容。您可以在美國版權局的官方網站上找到有關DMCA的更多信息。有關GitHub如何處理DM…

AI安全監控與人才需求的時間悖論(對AI安全模型、AI安全人才需求的一些思考)

當監控者與被監控者都是AI時&#xff0c;誰來監控監控者&#xff1f;這個看似簡單的問題&#xff0c;卻揭示了人工智能安全領域的根本性困境。一、問題的提出&#xff1a;當AI監控AI 隨著大語言模型和生成式AI的快速發展&#xff0c;AI系統在元認知層面的能力越來越強&#xff…

AI模型部署 - 大型語言模型(LLM)推理部署中的實際顯存評估

目錄 第一部分:大型語言模型(LLM)推理顯存占用的核心原理 1.1 顯存占用的主要構成部分 1.2 影響顯存占用的關鍵因素 1.2.1 模型架構:MoE vs. 稠密模型 1.2.2 上下文長度與并發數 1.2.3 部署方式與推理框架 1.2.4 硬件能力 第二部分:顯存占用的精確計算方法 2.1 模…

【大語言模型 16】Transformer三種架構深度對比:選擇最適合你的模型架構

【大語言模型 16】Transformer三種架構深度對比&#xff1a;選擇最適合你的模型架構 關鍵詞&#xff1a;Transformer架構&#xff0c;Encoder-Only&#xff0c;Decoder-Only&#xff0c;Encoder-Decoder&#xff0c;BERT&#xff0c;GPT&#xff0c;T5&#xff0c;模型選擇&…

【LeetCode 熱題 100】31. 下一個排列

Problem: 31. 下一個排列 文章目錄整體思路完整代碼時空復雜度時間復雜度&#xff1a;O(N)空間復雜度&#xff1a;O(1)整體思路 這段代碼旨在解決經典的 “下一個排列” (Next Permutation) 問題。問題要求重新排列一個整數數組&#xff0c;使其變為字典序上的下一個更大的排列…

【Linux 進程】進程程序替換

文章目錄1.進程替換的六個庫函數2.execl1.進程替換的六個庫函數 使用 man 3 execl 進行查詢&#xff0c;3表示 Linux 中的3號手冊&#xff0c;即為庫函數&#xff08;例如C標準庫中的庫函數&#xff0c;printf&#xff0c;malloc&#xff09; man 1: 用戶命令&#xff08;在sh…

ReasonRank: Empowering Passage Ranking with Strong Reasoning Ability

主要內容總結 本文提出了一種具有強推理能力的列表式段落重排序模型ReasonRank,旨在解決現有重排序模型在推理密集型場景(如復雜問答、數學問題、代碼查詢等)中表現不佳的問題,核心原因是這類場景缺乏高質量的推理密集型訓練數據。 為解決這一問題,研究團隊: 設計了自動…

不卡頓、不掉線!穩定可靠的體育賽事直播系統源碼解析

在體育和電競行業&#xff0c;實時直播系統已經成為平臺的標配。無論是 OTT、比分直播網站&#xff0c;還是綜合類體育社區&#xff0c;用戶對直播體驗的要求越來越高&#xff1a;不卡頓、不掉線、實時性強。那么&#xff0c;從技術角度出發&#xff0c;一個穩定可靠的 體育賽事…

三菱FX5U PLC訪問字變量的某一位

三菱FX5U PLC氣缸控制功能塊 三菱FX5U氣缸控制功能塊(完整ST源代碼+示例程序)_三菱fx5u標簽氣缸報警程序功能塊-CSDN博客文章瀏覽閱讀560次,點贊5次,收藏2次。如果機器包含100個氣缸,我們只需要修改數組的元素數量就可以了,效率非常的高。待續....博途PLC 面向對象系列之“…

Java大廠面試全真模擬:從Spring Boot到微服務架構實戰

Java大廠面試全真模擬&#xff1a;從Spring Boot到微服務架構實戰 面試場景&#xff1a;某互聯網大廠Java后端崗位&#xff0c;候選人謝飛機&#xff08;水貨程序員&#xff09; 第一輪&#xff1a;基礎與框架認知 面試官&#xff1a;你好&#xff0c;謝飛機&#xff0c;先簡單…

Unity游戲打包——Mac基本環境雜記

1、安裝 Homebrew若未安裝&#xff0c;在使用 brew 命令時將提示 zsh: command not found: brew安裝命令&#xff1a;/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2、更換終端默認 Shell 為 zsh查看已安裝的shell&#…

服務組件體系結構(SCA)全景解析

服務組件體系結構&#xff08;SCA&#xff09;全景解析SCA&#xff08;Service Component Architecture&#xff09;是 SOA 生態中專門用來“把服務拼起來并跑起來”的規范。它通過語言中立、協議可插拔、裝配聲明式三大能力&#xff0c;把“接口—實現—協議”徹底解耦&#x…

問:單證碩士含金量是否不足?

很多人認為花幾萬塊錢讀一個同等學歷申碩&#xff0c;含金量并沒有那么高&#xff0c;但事實卻并非如此。今天我們從證書和學習的兩個方面來聊一下同等學歷申碩的含金量到底是如何的。一、單證含金量看以下幾點&#xff1a;&#xff08;1&#xff09;國家認證與學信網可查 …

0.04% vs 0.1%:精度差一點,逆變器性能差距有多大?

一臺光伏逆變器損失的功率可能僅僅源于0.3%的MPPT效率差距。這個足以影響產品競爭力的數字&#xff0c;可能并非算法優劣&#xff0c;而在于測試源頭的精度選擇&#xff1a;是0.04%還是0.1%&#xff1f;本文通過四大測試場景的量化對比&#xff0c;揭示不同的測試精度如何影響產…

Docker Hub 鏡像一鍵同步至阿里云 ACR

&#x1f433; Docker Hub 鏡像一鍵同步至阿里云 ACR 本腳本用于 從 Docker Hub 拉取鏡像并推送到阿里云容器鏡像服務&#xff08;ACR&#xff09;。 它通過 Python 的 docker SDK 封裝了完整流程&#xff1a;拉取 → 重命名 → 登錄 → 推送&#xff0c;并在控制臺實時輸出進度…