1. 程式人生 > >第二週——專案3複雜度體驗(2)漢諾塔

第二週——專案3複雜度體驗(2)漢諾塔

/* 
 *Copyright (c++) 2015,煙臺大學計算機學院   
 *All rights reserved.   
 *檔名稱:hut.cpp   
 *作者:商文軻 
 *完成日期:2014年9月17日   
 *版本號:vc6.0   
 *問題描述:用遞迴演算法求解漢諾塔問題,其複雜度可以求得為O(2 n ) ,是指數級的演算法
            不同盤子所消耗的時間
            
 *輸入描述:無  
 *程式輸出:演算法的執行時間  
*/    


#include <stdio.h>
#define discCount 4 //改變discCount 執行在8,16,20,24下的結果
long move(int, char, char,char);
int main()
{
    long count;
    count=move(discCount,'A','B','C');
    printf("%d個盤子需要移動%ld次\n", discCount, count);
    return 0;
}

long move(int n, char A, char B,char C)
{
    long c1,c2;
    if(n==1)
        return 1;
    else
    {
        c1=move(n-1,A,C,B);
        c2=move(n-1,B,A,C);
        return c1+c2+1;
    }
}


四個盤子

八個盤子

16個盤子

相關推薦

第二——專案3複雜體驗2

/* *Copyright (c++) 2015,煙臺大學計算機學院 *All rights reserved. *檔名稱:hut.cpp *作者:商文軻 *完成日期:2014年9月17日 *版本號:vc6.0 *問題描述:用

第二專案3複雜體驗

<pre class="cpp" name="code">01./* 02.*Copyright (c)2015,煙臺大學計算機與控制工程學院 03.*All rights reserved. 04.*檔名稱:漢諾塔.cbp 05.*作 者:李涵睿

第二專案3-體驗複雜2

問題及程式碼: /* *煙臺大學計算機與控制工程學院 *檔名稱:lulu.cpp *作 者:蘆亞茹 *完成日期:2015年9月13日 *問題描述:漢諾塔 *輸入描述:無 *程

資料結構和算法系列3--複雜分析

複雜度分析的4個概念 1.最壞情況時間複雜度:程式碼在最理想情況下執行的時間複雜度。 2.最好情況時間複雜度:程式碼在最壞情況下執行的時間複雜度。 3.平均時間複雜度:用程式碼在所有情況下執行的次數的加權平均值表示。 4.均攤時間複雜度:在程式碼執行的所有複雜度情況中絕大部分是低級別的複

第十一上機實踐專案——專案3-警察和廚師-2

/* *Copyright (c)2016,煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱:main.cpp *作 者:郭永恆 *完成日期:2016

第十一專案二發工資啦2

/* * 程式的版權和版本宣告部分 * Copyright (c)2014, 煙臺大學計算機學院學生 * All rightsreserved. * 檔名稱:student .cpp * 作者:紀麗娜 * 完成日期:2014年5月7日 * 版本號: v1.0 * 問題描述: 定義一個名為CPerso

演算法之路----又稱河內之

漢諾塔是很簡單也很經典的演算法之一。 漢諾塔是根據一個傳說形成的數學問題: 有三根杆子A,B,C 。A杆上有N個(N>1)穿孔圓盤,盤的尺寸由下到上依次變小。要求按下列規則將所有圓盤移至C杆: * 1 每次只能移動一個圓盤; * 2 大盤不能疊在小盤上面。 提示:可將圓

演算法分析與設計基礎1問題

問題描述就不說了,自行百度。問題求解的思路本來想用文字描述一下的,結果發現知乎上有人發了個圖,我覺得解釋的十分清楚。下面貼圖: 總結出來一共就三步: 將底盤n以上的環(n-1個)移動到B將

用C語言解決hanoi問題——函式的遞迴呼叫

#include <stdio.h> void main() { void hanoi(int n,char one,char two,char three); int n; printf("請輸入需要移動的盤子數:\n"); scanf("%d",&n

Hanoijava實現程式

漢諾塔:漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一

第二 專案32--體驗複雜---

/* *Copyright (c)2016,煙臺大學計算機學院 *All rights reserved. *檔名稱:傳寫.cpp *作者:李欣 *完成日期:2016年9月8日 *版本號:v1.0 * *問題描述:用遞迴演算法求解漢諾塔問題,體驗盤子數為4、8、16、20、24時在時間耗費

第二專案3體驗複雜

(1)兩種排序演算法的執行時間 提供兩種排序演算法,複雜度為O(n 2  )的選擇排序selectsort,和複雜度為O(nlogn) 的快速排序quicksort,在main函式中加入了對執行時間的統計。 利用一個將近10萬條資料的檔案作為輸入資料執行程式,感受兩種演算

第二專案3體驗複雜 問題

問題及程式碼: /* copyright (t) 2016,煙臺大學計算機學院 *All rights reserved. *檔名稱:cpp1.cpp *作者:張相如 *完成日期:2016年9月8日 *版本號:v1.0 *問題描述:用遞迴演算法求解漢諾塔問題,

第二專案3 體驗複雜

問題描述及程式碼: /* *煙臺大學計控學院 *作 者:楊徵 *完成日期:2015年9月11日 *問題描述:有一個印度的古老傳說:在世界中心貝拿勒斯(在印度北部)的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從

第二專案3 體驗複雜

#include <stdio.h> #include <time.h> #include <stdlib.h> #define MAXNUM 100000 void quicksort(int data[],int first,int last) { int i,

第二-專案3 體驗複雜-問題

問題及程式碼: /* *Copyright (c) 2016, 煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱:s3 *作 者:孫麗瑋 *完成日期:2016年9月6日 *問題描述:有一個印度的古老傳說:在世界中心貝拿勒

第二-專案3

            #include <stdio.h> #include <time.h> #include <stdlib.h> #define MAXNUM 100000 void selectsort(int a[], in

LRU (最近最少使用) 快取機制:時間複雜O1

/** * Double Linked List * 用了一個特別的雙向的ListNode,有了head和tail,這樣就大大加快了速度。 * 主要加快的就是那個‘更新排位’的過程,找到item hashmap O(1), 做減法換位也都是O(1) * Overall O(1)

編寫程式,在一非遞減的順序表L中,刪除所有值相等的多餘元素。要求時間複雜On,空間複雜為O1

翠花上程式碼: Status delExcrescentValue(SeqList &S){ int flag = 0,val = S.elem[0];//記錄值不等的下標 //printf("%d\n",S.elem[0]); for(int i = 1;i

已知順序表L中的元素為int,請寫一時間複雜On、空間複雜為O1的程式,將L中的奇數元素排在前面,偶數元素排在後面

Status exchangeEvenOddNumbers(SeqList &S){ int j = 0,k = 0; for(int i = 0;i<=S.last;i++){ if(S.elem[i]%2 == 1){ k