zoz○zo女人和另类zoz0,freeⅹ性欧美xvideos,中文字幕人妻一区二区三区熟女,97四房播播,av狼最新网址

大學(xué)生新聞網(wǎng),大學(xué)生新聞發(fā)布平臺(tái)
大學(xué)生新聞網(wǎng)
大學(xué)生新聞大學(xué)生活校園文學(xué)大學(xué)生村官
社會(huì)實(shí)踐活動(dòng)社會(huì)實(shí)踐經(jīng)歷社會(huì)實(shí)踐報(bào)告社會(huì)實(shí)踐總結(jié)社會(huì)實(shí)踐心得
全國(guó)排名校友會(huì)版軟科排名分類排名本科排名一本排名二本排名專科排名學(xué)校地址
求職簡(jiǎn)歷職場(chǎng)法則面試技巧職場(chǎng)故事求職招聘大學(xué)生就業(yè)
英語(yǔ)學(xué)習(xí)計(jì)算機(jī)學(xué)習(xí)電氣工程機(jī)械工程經(jīng)濟(jì)管理建筑設(shè)計(jì)財(cái)務(wù)會(huì)計(jì)
申請(qǐng)書證明書檢討書自薦信演講稿心得體會(huì)調(diào)查報(bào)告讀后感求職信推薦信其它范文

C語(yǔ)言漢諾塔問(wèn)題,用C語(yǔ)言實(shí)現(xiàn)漢諾塔

漢諾塔問(wèn)題是指:一塊板上有三根針 A、B、C。A 針上套有 64 個(gè)大小不等的圓盤,按照大的在下、小的在上的順序排列,要把這 64 個(gè)圓盤從 A 針移動(dòng)到 C 針上,每次只能移動(dòng)一個(gè)圓盤,移動(dòng)過(guò)程可以借助 B 針。但在任何時(shí)候,任何針上的圓盤都必須保持大盤在下,小盤在上。從鍵盤輸入需移動(dòng)的圓盤個(gè)數(shù),給出移動(dòng)的過(guò)程。

算法思想
對(duì)于漢諾塔問(wèn)題,當(dāng)只移動(dòng)一個(gè)圓盤時(shí),直接將圓盤從 A 針移動(dòng)到 C 針。若移動(dòng)的圓盤為 n(n>1),則分成幾步走:把 (n-1) 個(gè)圓盤從 A 針移動(dòng)到 B 針(借助 C 針);A 針上的最后一個(gè)圓盤移動(dòng)到 C 針;B 針上的 (n-1) 個(gè)圓盤移動(dòng)到 C 針(借助 A 針)。每做一遍,移動(dòng)的圓盤少一個(gè),逐次遞減,最后當(dāng) n 為 1 時(shí),完成整個(gè)移動(dòng)過(guò)程。

因此,解決漢諾塔問(wèn)題可設(shè)計(jì)一個(gè)遞歸函數(shù),利用遞歸實(shí)現(xiàn)圓盤的整個(gè)移動(dòng)過(guò)程,問(wèn)題的解決過(guò)程是對(duì)實(shí)際操作的模擬。

程序代碼

#include <stdio.h>
int main()
{
    int hanoi(int,char,char,char);
    int n,counter;
    printf("Input the number of diskes:");
    scanf("%d",&n);
    printf("\n");
    counter=hanoi(n,'A','B','C');
    return 0;
}
 
int hanoi(int n,char x,char y,char z)
{
    int move(char,int,char);
    if(n==1)
        move(x,1,z);
    else
    {
        hanoi(n-1,x,z,y);
        move(x,n,z);
        hanoi(n-1,y,x,z);
    }
    return 0;
}
 
int move(char getone,int n,char putone)
{
    static int k=1;
    printf("%2d:%3d # %c---%c\n",k,n,getone,putone);
    if(k++%3==0)
        printf("\n");
    return 0;
}
調(diào)試運(yùn)行結(jié)果
當(dāng)移動(dòng)圓盤個(gè)數(shù)為 3 時(shí),具體移動(dòng)步驟如下所示:
Input the number of diskes:3

1: 1 # A---C
2: 2 # A---B
3: 1 # C---B

4: 3 # A---C
5: 1 # B---A
6: 2 # B---C

7: 1 # A---C
總結(jié)
本實(shí)例中定義的 hanoi() 函數(shù)是一個(gè)遞歸函數(shù),它有四個(gè)形參"n""x""y""z"。"n" 是移動(dòng)的圓盤個(gè)數(shù),"x""y""z" 分別表示三根針,其功能是把 x 上的 n 個(gè)圓盤移動(dòng)到 z 上。當(dāng) n=1 時(shí),直接把 x 上的圓盤移到 z 上,輸出"x---Z"。當(dāng) n!=1 時(shí),則遞歸調(diào)用 hanoi() 函數(shù),把 (n-1) 個(gè)圓盤從 x 移到 y,輸出"x—-z";再遞歸調(diào)用 hanoi() 函數(shù),把 (n-1) 個(gè)圓盤從 y 移到 z。在遞歸調(diào)用函數(shù)的過(guò)程中"n=n-1",n 的值逐次遞減,最后 n=1,終止遞歸調(diào)用,逐層返回,移動(dòng)過(guò)程結(jié)束。
    作者:大學(xué)生新聞網(wǎng)    來(lái)源:大學(xué)生新聞網(wǎng)
    發(fā)布時(shí)間:2025-03-10    閱讀:
    掃一掃 分享悅讀
  • C語(yǔ)言日期函數(shù),日期處理函數(shù)
  • 定義一個(gè)表示日期的結(jié)構(gòu)體類型,再分別定義函數(shù)完成下列功能:計(jì)算某一天是對(duì)應(yīng)年的第幾天,這一年一共多少天;計(jì)算兩個(gè)日期之間相隔的
  • 03-10 關(guān)注:0
  • C語(yǔ)言整數(shù)逆序輸出
  • 將一個(gè)從鍵盤輸入的整數(shù)存放到一個(gè)數(shù)組中,通過(guò)程序的運(yùn)行按照數(shù)組中的逆序輸出該整數(shù),利用遞歸的方法解決問(wèn)題。
  • 03-10 關(guān)注:1
  • C語(yǔ)言約瑟夫環(huán)問(wèn)題
  • 編號(hào)為 1,2,3,…,n 的 n 個(gè)人圍坐一圈,任選一個(gè)正整數(shù) m 作為報(bào)數(shù)上限值,從第一個(gè)人開(kāi)始按順時(shí)針?lè)较驁?bào)數(shù),報(bào)數(shù)到 m 時(shí)停止,報(bào)
  • 03-10 關(guān)注:1