1. 程式人生 > >《演算法設計與分析基礎》第一、二章

《演算法設計與分析基礎》第一、二章

1. 求最大公約數的兩種方法:

第一種,歐幾里德演算法:gcd(m,n)=gcd(m,m%n);

直到m%n為零時,計算結束,最大公約數為此時的m。

第二種,質因數解法:分別找到m和n的所有質因數,最大公約數就是公共質因數的乘積。

求質因數的方法是“埃拉托色尼篩”:設要求質因數的數為x,將從2到x的每個數存入陣列。然後對於陣列中滿足2<=i<=√n從i*i開始到n為止,消除是i的倍數的數,剩下的數就是質因數。

A[i]=i;

for(i=2;i<=√n;++i){

    if(A[i]!=0)

      j=i*i;

    while(j<=n){

       A[j]=0;

       j+=i;

   }

}

2. 歐幾里德演算法是可以擴充套件的:

3. 基本的效率型別:1<logn<n<nlogn<n^2<n^3<2^n<n!

4. 斐波那契數列: F(n)=F(n-1)+F(n-2); F(0)=0;F(1)=1;

遞迴演算法的效率很低,因為有很多函式值被重複計算,複雜度是o(([1+sqrt(5)]/2)^n),很慢;寫成非遞迴的行時候會快很多,成為o(n)級別。使用卡西尼恆等式F(n+1)F(n-1)-F(n)^2=(-1)^n來計算的話,可以達到o(logn)級別。

相關推薦

演算法設計分析基礎第一

1. 求最大公約數的兩種方法: 第一種,歐幾里德演算法:gcd(m,n)=gcd(m,m%n); 直到m%n為零時,計算結束,最大公約數為此時的m。 第二種,質因數解法:分別找到m和n的所有質因數,最大公約數就是公共質因數的乘積。 求質因數的方法是“埃拉托色尼篩”:設要求

演算法設計分析》第十週作業

《演算法設計與分析》第十二週作業 標籤(空格分隔): 課堂作業 文章目錄 《演算法設計與分析》第十二週作業 @[toc] 題目概要 思路 具體實現 心得 原始碼:

演算法設計分析第一週作業

《演算法設計與分析》第一週作業 標籤(空格分隔): 課堂作業 姓名:李** 學號:16340114 題目:Valid Parentheses(https://leetcode.com/problems/valid-parentheses/description/) 題目

演算法設計分析基礎 第五謎題

習題5.1 11.Tromino謎題 Tromino是一個由棋盤上的三個1×1方塊組成的L型骨牌。我們的問題是,如何用Tromino覆蓋一個缺少了一個方塊的2n×2n棋盤。除了這個缺失的方塊,Tromino應該覆蓋棋盤上的所有方塊,Tromino可以任意轉向但不能有重疊。 為此問題

演算法設計分析基礎 第四謎題

習題4.1 1.擺渡的士兵 n個士兵組成的分隊必須越過一條又深又寬又沒有橋的河。他們注意到在岸旁有兩個12歲大的小男孩在玩划艇。然而船非常小,只能容納兩個男孩或一名士兵。怎樣才能讓士兵渡過河,並且留下兩個男孩操縱這條船?這條船要在岸與岸之間橫渡多少次? 解答:每次只能容納一名士兵,所以士

演算法設計分析基礎 第三謎題

習題3.1 6.四格拼板 四格拼板是由4個1*1的正方形組成。下面是5種類型的四格拼板: 分別利用以下四格拼板,看看是否有可能在不重疊的情況下完全覆蓋一個8*8的棋盤。 a. 直線拼板   可以,長和寬能被8整除 b. 方形拼板   

演算法設計分析基礎 第六謎題

習題6.1 9.數字填空 給定n個不同的整數以及一個包含n個空格的序列,每個空格之間事先給定有不等(>或<)符號,請設計一個演算法,將n個整數填入這n個空格中並滿足不等式約束。例如,數4,6,3,1,8可以填在這樣的5個空格中: 解答:將n個正整數從小到大排序,然後將數

演算法設計分析基礎【第三版】習題1.1 4

演算法設計與分析基礎 習題1.1 4 設計一個[√n]的演算法,n是任意正整數。除了賦值和比較運算,該演算法只能用到基本的四則運算。 程式碼實現: #include "iostream" using namespace std; double n; doubl

演算法設計分析基礎 第七謎題

習題7.1 6. 祖先問題要求在一棵給定的n頂點二叉樹中,確定一個頂點u是否是頂點v的祖先。設計一個屬於O(n)的輸入增強演算法,使我們可以在常量時間內獲得樹的每一對頂點的足夠資訊,來對問題求解。 分析:一個頂點u是頂點v的祖先,當前僅當先序遍歷u在v的前面,並且後序遍歷u在v的後面。第

演算法設計分析基礎 第二版》pdf

下載地址:網盤下載 內容簡介 編輯   國外經典教材·電腦科學與技術:該書作者基於教學經驗,開發了一套對演算法進行分類的新方法。內容包括演算法效率分析基礎、蠻力法、分治法、減治法、變治法、動態規劃等11章。各章節均含有習題,書後給出體系提示。 作者簡

演算法設計分析基礎

To All Of You: 一個人在接受科技教育時能得到的最珍貴的收穫是能夠終身受用的通用智慧工具。 在討論演算法的書籍中,一般會採用兩種方案中的一種: 1.第一種方案是按照問題的型別對演算法進行分類。這類教材安排了不同的章節分別討論排序,查詢,圖等演算

演算法設計分析】6最大欄位和

/** * 書本:《演算法分析與設計》 * 功能:若給定n個整陣列成的序列a1, a2, a3, ......an, 求該序列形如ai+a(i+1)+......+an的最大值 * 檔案:MaxSum.cpp * 時間:2014年11月30日17:37:26 * 作者:cu

演算法設計分析基礎知識

前言       回顧我以往的部落格,曾想暢遊leetcode的題海,踏遍千山翻遍萬水以求有所進步,刷題到不到一半便因為碩士開題而中道崩殂;曾想成為一名Qt高手,想把Qt的官方文件翻譯成中文,卻在浩如煙海的官方文件中迷失自己,僅僅有幾篇孤零零的翻譯文稿,翻譯計

【算法設計分析基礎】11廣度優先遍歷

append path str src http adt ise uil tor package cn.xf.algorithm.ch03; import java.util.ArrayDeque; import java.util.Iterator; import j

【算法設計分析基礎】12插入排序

排序 org vision out sys pac data image 技術 package cn.xf.algorithm.ch04; import org.junit.Test; /** * * * . * @author xiaof * @ver

【算法設計分析基礎】14快速排序

元素 right get class ima div true cnblogs param package cn.xf.algorithm.ch04; import java.util.ArrayList; import java.util.Arrays; import

【算法設計分析基礎】15最近對問題

filename com 算法設計 2個 junit 開始 替換 lis 之間 1、由於Java中沒有存放單個鍵值對的類型使用起來不是很方便 package cn.xf.util; /** * * 功能:相當於一個key value * @author xi

【算法設計分析基礎】16高斯消元法

ane sys cnblogs 根據 gauss tostring logs junit air package cn.xf.algorithm.ch06ChangeRule; import java.util.ArrayList; import java.util.L

【算法設計分析基礎】23堆排序-2

mov 完全二叉樹 return 遍歷 滿足 指定 val cti eap package cn.xf.algorithm.ch09Greedy.util; import java.util.ArrayList; import java.util.List; /**

演算法設計分析

53.Question Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum a