1. 程式人生 > >100行C程式碼實現字元列印漢諾塔

100行C程式碼實現字元列印漢諾塔

#include <stdio.h>

/*-------------------------------------------\
| 僅供於實現功能,看情況自己再新增延時函式等實現動畫效果 |
\-------------------------------------------*/

/*定義每個柱子的資料結構-->陣列*/
int zhuzi_a[]={0,0,0,0,0,0,0,0,0,0};
int zhuzi_b[]={0,0,0,0,0,0,0,0,0,0};
int zhuzi_c[]={0,0,0,0,0,0,0,0,0,0};
/*定義陣列指標*/
int *p_a = zhuzi_a;
int *p_b = zhuzi_b;
int
*p_c = zhuzi_c; /*從柱子上取出最上面的一個盤子*/ int zhuzi_pop(int *zhuzi) { int i,pop; for(i=0;i<=9;i++) { if(zhuzi[i] != 0)/*從前往後比較,遇到不為0的元素,將其取出,並將該位置置0 */ { pop = zhuzi[i]; zhuzi[i] = 0; return pop;/*返回取到的元素*/ } } } /*放進一個盤子到柱子上*/ void zhuzi_push(int
*zhuzi,int push) { int i; for(i=0;i<=9;i++) { if(zhuzi[i] != 0)/*從前往後比較,遇到不為0的元素,將拿到的push放到前一個位置上 */ { zhuzi[i-1] = push; return; } else if(i == 9)/*柱子是空的,放到最底下一個位置*/ { zhuzi[9] = push; return; } } } /*畫畫函式-->列印三個柱子的盤子狀況 */
void zhuzi_huahua() { int i,j,a,b,c; for(i=0;i<=9;i++) { for(j=0;j<=112;j++) { /*獲取每一層三個柱子的盤子情況 */ a = 2*zhuzi_a[i]-1; b = 2*zhuzi_b[i]-1; c = 2*zhuzi_c[i]-1; /*列印*/ if(j>=(19-a)&j<=(17+a)|j>=(57-b)&j<=(55+b)|j>=(95-c)&j<=(93+c)) { printf("+"); } else if(j == 18|j ==56|j==94) { printf(" "); } else if(j==37|j==75) { printf("#"); } else { printf(" "); } } printf("\n"); } printf("-----------------------------------------------------------------------------------------------------------------\n"); } /*移動盤子的函式 */ void move(int *start,int *end) { int i; zhuzi_push(end,zhuzi_pop(start));/*將盤子移動到目標柱子 */ zhuzi_huahua(); } /*遞迴演算法函式*/ void hanoi(int n,int *from,int *denpend_on,int *to) { if (n==1) move(from,to); else { hanoi(n-1,from,to,denpend_on); move(from,to); hanoi(n-1,denpend_on,from,to); } } /*主函式*/ int main() { int n,i; printf("Please enter the number of dishes:\n"); scanf("%d",&n); while(n>10) { printf("Plates must be less than or equal to 10!\n"); scanf("%d",&n); } for(i=1;i<=n;i++) zhuzi_a[9-n+i] = i;/*給柱子A賦值,從大到小依次放入底部,zhuzi_a[9]是底 */ printf("start...:\n"); hanoi(n,p_a,p_b,p_c); return 0; }

相關推薦

100程式碼實現字元列印

#include <stdio.h> /*-------------------------------------------\ | 僅供於實現功能,看情況自己再新增延時函式等實現動畫效果 | \-------------------------

三十八、100python程式碼實現機器學習自動分類

現在朋友圈、公眾號、微博資訊應接不暇,以微信公眾號舉例,看技術極客是怎麼自動篩出自己想看的文章的,100行機器學習程式碼就能自動幫你歸好類,要想找出想看的和不想看的,你再也不用刷朋友圈了 準備工作 1. 準備一張mysql資料庫表,至少包含這些列:id、title(文章標題)、content(文章內

100Javascript程式碼實現視訊通話

視訊聊天室 上一篇文章通過JavaScript呼叫AnyChat實現視訊聊天室 簡單地講述瞭如何通過AnyChat做視訊聊天室。通過學習,我自己也做了個簡單的小例子,幾十行JavaScript指令碼就能輕鬆實現視訊通話;也不用去下載指定的什麼瀏覽器,因為IE、firefo

python實現簡單的問題

漢諾塔問題可以簡單描述成為將a柱子上的圓盤按一定規則藉助b柱子完美地複製到c柱子上。現假設有a,b,c三根柱子,a柱子上的圓盤從上到下依次標號為1,2,3,……,n,且為遞增狀態。規則:每次移動一個盤子,且只能讓小的放在大的上面。目標:移動到c柱子上,與原來a上

Python列印移動的步驟

wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------

100 C 程式碼終端列印樹形結構

講究套路之前,先來回答三個問題。 為什麼要列印樹形結構 樹形結構是演算法裡很常見的一種資料結構,從二叉樹到多叉樹,還有很多變種。很多涉及到演算法的工作,就需要程式設計師自己手動實現樹形結構,但出於結構本身複雜性,不太容易做對,需要一種除錯工具來檢測正確性。一般的除錯

5Python程式碼實現一個簡單的線上英詞典

# -*- coding: utf-8 -*- import urllib, urllib2, simplejson while True: url = 'http://fanyi.youdao.com/openapi.do?key=79379998&keyfro

100代碼實現最簡單的基於FFMPEG+SDL的視頻播放器(SDL1.x)【轉】

工程 全屏 升級版 gin avcodec ive 系列文章 相同 hello 轉自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版權聲明:本文為博主原創文章,未經博主允許不得轉載。

手把手|100Python程式碼自動搶火車票!(包教包會)

又到一年一度春運大會,2017年春運搶火車票還是那麼難,各大網際網路公司都推出搶票服務,只要加錢給服務費就可以增加搶到票的機率,有些代售火車票點,說給100元服務費,可以幫搶到,看來這水很深啊! 下面我們利用自己學的技術來自動搶票,本次指令碼基於Python3.6+splinter來實現:

利用itchat 10python程式碼實現微信轟炸

''' 轉載:https://github.com/Gin79/WeChat-Bomb/blob/master/README.md ''' 說明 站在巨人的肩膀上 基於python,這個小程式是用python寫的 使用的是python第三方庫itchat,itc

10 Java 程式碼實現 LRU 快取

10 行 Java 程式碼實現 LRU 快取 (整理自網路) 最近最少使用快取的回收 為了實現快取回收,我們需要很容易做到: 查詢出最近最晚使用的項 給最近最少使用的項做一個標記 連結串列可以實現這兩個操作。檢測使用最近最少使用的項只需要返回連結串列的尾部。標記一項為最近最少使用的項只需

用20JS程式碼實現貼上板功能

document.execCommand() 此方法就是實現剪貼簿的關鍵,它可以傳入cut,copy,paste三種引數。從最常用的document.execCommand('copy')開始介紹。 在使用之前,我們應該檢查瀏覽器是否支援copy命令:document.queryCommandS

遞迴實現——Java程式碼

在遞迴中不斷重複以下步驟: 若要將N層從X轉移到Z,則需要將N-1層從X轉移到Y,再將第N層從X轉移到Z,最後將N-1層從Y轉移到Z;將N層從從X轉移到Y、Y轉移到Z、Y轉移到X、Z轉移到X、Z轉移到Y也類似。 返回條件:N == 1時,第N層直接轉移到Z。(

100Python程式碼,幫你分析國慶應該去哪裡玩才是最好的選擇

小編有自己的Python學習交流群:865597862 !進群免費獲取2018最新的Python學習資料!文件、視訊!安排!!!! 統計結果 此次的統計結果只是從側面反映景點爆滿的問題,未必是完全準確的,僅供參考。此次統計的景點共有 100 個: 有需要Python

100 python 程式碼告訴你國慶哪些景點爆滿

前言 舉國歡慶的國慶節馬上就要到來了,你想好去哪裡看人山人海了嗎?還是窩在家裡充電學習呢?說起國慶,塞車與爆滿這兩個詞必不可少,去年國慶我在想要是我能提前知道哪些景點爆滿就好了,就不用去湊熱鬧了。於是我開始折騰,想用 python 抓取有關出行方面的資料,便有了這篇文章。如

神奇,幾Python程式碼實現隨機生成生成優惠券

  生活中我們到處搶優惠券,到處用到優惠券,彷彿一輸入類似“yxune1uaqc5”一串代號的優惠券,立刻感覺撿到大便宜。商家這些優惠券的編碼都是怎麼生成的呢? 學習Python中有不明白推薦加入交流群         &n

40JavaScript程式碼實現的3D旋轉魔方動畫效果

JS1K是JavaScript程式設計競賽——參加競賽的規則很簡單,指令碼必須小於1K,競賽網站開始也只是為了娛樂,卻意外地收到了很多優秀的作品。 這是2016年JS1k上傳的作品,用幾十行程

CSS 程式碼實現圖片任意顏色賦色技術

很久之前在張鑫旭大大的部落格看到過一篇 PNG格式小圖示的CSS任意顏色賦色技術,當時驚為天人,感慨還可以這樣玩,私底下也曾多次想過有沒有其他方法可以實現,又或者不僅僅侷限於 PNG 圖片。 mix-blend-mode 與 background-blend-mode mix-blend-mode 在我之

30Javascript程式碼實現圖片懶載入

小編推薦:Fundebug專注於JavaScript、微信小程式、微信小遊戲,Node.js和Java實時BUG監控。真的是一個很好用的bug監控費服務,眾多大佬公司都在使用。 前言 頁面太多圖片?那麼請你花20分鐘去優化一下頁面的效能 講道理,當你為圖片的src賦值時,D

勒索病毒只需100Python程式碼, 低調學習, 勿用非法!

本軟體只有短短100行,很顯然,製作一個實現批量加密功能的軟體在技術上非常容易,也就是說大多數有程式設計基礎的人都可有能力製作並傳播WANNACRY這樣的勒索軟體。然而企圖利用技術違法犯罪賺不義之財的敗類畢竟只是少數。勿起邪念! 我相信法網恢恢疏而不漏,犯罪分子一定難逃法律