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行C程式碼實現字元列印漢諾塔
#include <stdio.h> /*-------------------------------------------\ | 僅供於實現功能,看情況自己再新增延時函式等實現動畫效果 | \-------------------------
三十八、100行python程式碼實現機器學習自動分類
現在朋友圈、公眾號、微博資訊應接不暇,以微信公眾號舉例,看技術極客是怎麼自動篩出自己想看的文章的,100行機器學習程式碼就能自動幫你歸好類,要想找出想看的和不想看的,你再也不用刷朋友圈了 準備工作 1. 準備一張mysql資料庫表,至少包含這些列:id、title(文章標題)、content(文章內
100行Javascript程式碼實現視訊通話
視訊聊天室 上一篇文章通過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 程式碼終端列印樹形結構
講究套路之前,先來回答三個問題。 為什麼要列印樹形結構 樹形結構是演算法裡很常見的一種資料結構,從二叉樹到多叉樹,還有很多變種。很多涉及到演算法的工作,就需要程式設計師自己手動實現樹形結構,但出於結構本身複雜性,不太容易做對,需要一種除錯工具來檢測正確性。一般的除錯
5行Python程式碼實現一個簡單的線上英漢詞典
# -*- 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 版權聲明:本文為博主原創文章,未經博主允許不得轉載。
手把手|100行Python程式碼自動搶火車票!(包教包會)
又到一年一度春運大會,2017年春運搶火車票還是那麼難,各大網際網路公司都推出搶票服務,只要加錢給服務費就可以增加搶到票的機率,有些代售火車票點,說給100元服務費,可以幫搶到,看來這水很深啊! 下面我們利用自己學的技術來自動搶票,本次指令碼基於Python3.6+splinter來實現:
利用itchat 10行python程式碼實現微信轟炸
''' 轉載:https://github.com/Gin79/WeChat-Bomb/blob/master/README.md ''' 說明 站在巨人的肩膀上 基於python,這個小程式是用python寫的 使用的是python第三方庫itchat,itc
10 行 Java 程式碼實現 LRU 快取
10 行 Java 程式碼實現 LRU 快取 (整理自網路) 最近最少使用快取的回收 為了實現快取回收,我們需要很容易做到: 查詢出最近最晚使用的項 給最近最少使用的項做一個標記 連結串列可以實現這兩個操作。檢測使用最近最少使用的項只需要返回連結串列的尾部。標記一項為最近最少使用的項只需
用20行JS程式碼實現貼上板功能
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。(
100行Python程式碼,幫你分析國慶應該去哪裡玩才是最好的選擇
小編有自己的Python學習交流群:865597862 !進群免費獲取2018最新的Python學習資料!文件、視訊!安排!!!! 統計結果 此次的統計結果只是從側面反映景點爆滿的問題,未必是完全準確的,僅供參考。此次統計的景點共有 100 個: 有需要Python
100 行 python 程式碼告訴你國慶哪些景點爆滿
前言 舉國歡慶的國慶節馬上就要到來了,你想好去哪裡看人山人海了嗎?還是窩在家裡充電學習呢?說起國慶,塞車與爆滿這兩個詞必不可少,去年國慶我在想要是我能提前知道哪些景點爆滿就好了,就不用去湊熱鬧了。於是我開始折騰,想用 python 抓取有關出行方面的資料,便有了這篇文章。如
神奇,幾行Python程式碼實現隨機生成生成優惠券
生活中我們到處搶優惠券,到處用到優惠券,彷彿一輸入類似“yxune1uaqc5”一串代號的優惠券,立刻感覺撿到大便宜。商家這些優惠券的編碼都是怎麼生成的呢? 學習Python中有不明白推薦加入交流群 &n
40行JavaScript程式碼實現的3D旋轉魔方動畫效果
JS1K是JavaScript程式設計競賽——參加競賽的規則很簡單,指令碼必須小於1K,競賽網站開始也只是為了娛樂,卻意外地收到了很多優秀的作品。 這是2016年JS1k上傳的作品,用幾十行程
兩行 CSS 程式碼實現圖片任意顏色賦色技術
很久之前在張鑫旭大大的部落格看到過一篇 PNG格式小圖示的CSS任意顏色賦色技術,當時驚為天人,感慨還可以這樣玩,私底下也曾多次想過有沒有其他方法可以實現,又或者不僅僅侷限於 PNG 圖片。 mix-blend-mode 與 background-blend-mode mix-blend-mode 在我之
30行Javascript程式碼實現圖片懶載入
小編推薦:Fundebug專注於JavaScript、微信小程式、微信小遊戲,Node.js和Java實時BUG監控。真的是一個很好用的bug監控費服務,眾多大佬公司都在使用。 前言 頁面太多圖片?那麼請你花20分鐘去優化一下頁面的效能 講道理,當你為圖片的src賦值時,D
勒索病毒只需100行Python程式碼, 低調學習, 勿用非法!
本軟體只有短短100行,很顯然,製作一個實現批量加密功能的軟體在技術上非常容易,也就是說大多數有程式設計基礎的人都可有能力製作並傳播WANNACRY這樣的勒索軟體。然而企圖利用技術違法犯罪賺不義之財的敗類畢竟只是少數。勿起邪念! 我相信法網恢恢疏而不漏,犯罪分子一定難逃法律