Gtth Lap Trinh Nang Cao_dhcl

Embed Size (px)

Citation preview

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    1/72

    LI M U

    Gio trnh thc hnh ny c vit theo gio trnh Lp trnh nng cao nhm mc ch

    lm ti liu cho sinh vin nm th 2 thc hnh mn hc ny. Ni dung ca gio trnh

    gm 4 chng th hin c bn cc k thut lp trnh thng gp i vi sinh vin.

    Chng 1. K thut lp trnh quy. Chng 2. Sp xp. Chng 3. i s ma trn. Chng 4. Mt s thut gii trn th.

    Chng 1 th hin mt s k thut lp trnh lm nn tng cho cc chng sau. i vi

    quy phi tuyn ch yu ta s dng k thut tm kim theo chiu su. K thut ny

    c p dng trong chng 4 tm ng i trn th. Tuy nhin, y ta chatrnh bi k thut duyt theo chiu su bng cch kh quy. K thut ny s c

    trnh bi trong gio trnh L thuyt th v thut gii.

    Chng 2 th hin mt s thut ton sp xp nhm gip sinh vin so snh v nh gi

    thut ton sp xp no s tt hn.

    Chng 3 th hin phng php gii h phng tr nh tuyn tnh bng phng php

    phn r ma trn bng thut ton Crout.

    Chng 4 th hin mt s thut gii tm ng i c bn trn th p dng k thut

    nh du nh, nh du cnh v k thut tham n.

    V thi gian phn b ging dy theo chng trnh khung v ni dung ca mn hc ny

    nn gio trnh khng trnh khi nhng khim khuyt. Rt mong nhn c s gp

    ca tt c cc bn quan tm n gio trnh ny.

    Ngy 24 thng 04 nm 2010

    Tc gi

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    2/72

    MC LC

    CHNG 1. K THUT LP TRNH QUY 1Bi tp 1. Tm phn t Fibonacci th n 1Bi tp 2. Tnh X ly tha n 1Bi tp 3. Thut ton Euclide tm c chung ln nht 2

    Bi tp 4. Tm

    c chung l

    n nh

    t c

    a n s

    nguyn

    3Bi tp 5. Tnh n giai tha 4

    Bi tp 6. T hp chp k ca n phn t 4Bi tp 7. Tnh tng n phn t trong danh sch 5Bi tp 8. quy h tng 6Bi tp 9. Tch n phn t trong danh sch 7Bi tp 10. m s ln xut hin ca phn t x trong danh sch 8Bi tp 11. Thp H Ni 9Bi tp 12. Lit k tt c dy nh phn di k 10Bi tp 13. Chnh hp khng lp chp k ca n phn t 12Bi tp 14. Hon v mng s nguyn c n phn t 14Bi tp 15. t n qun hu trn bn cvua 16

    Bi tp 16. Mi tun 18

    CHNG 2. SP XP 20Bi tp 1. Thut ton Bubble Sort 20Bi tp 2. Thut ton Selection Sort 23Bi tp 3. Thut ton Insertion Sort 26Bi tp 4. Thut ton Quick Sort 28Bi tp 5. Thut ton Heap Sort 30Bi tp 6. Thut ton Merge Sort 34

    CHNG 3. I S MA TRN 36

    Bi tp 1. Nhp xut ma trn 36Bi tp 2. Mt s php ton trn ma trn 37Bi tp 3. H phng trnh tuyn tnh dng tam gic trn 39Bi tp 4. H phng trnh tuyn tnh dng tam gic di 41Bi tp 5. Thut ton phn r ma trn A = LU 44Bi tp 6. Gii h phng trnh tuyn tnh da vo phn r LU 46Bi tp 7. nh thc ca ma trn 49

    CHNG 4. MT S THUT GII TRN TH 51Bi tp 1. Xt tnh lin thng ca th 51Bi tp 2. m s thnh phn lin thng 53Bi tp 3. Tm mi ng i t gia hai nh 56Bi tp 4. ng i Hamilton 58Bi tp 5.ng i Euler 61Bi tp 6. Thut ton Dijkstra tm ng i ngn nht 63Bi tp 7. Thut ton Prim tm cy bao trm ti tiu 65Bi tp 8. Thut ton Kruskal tm cy bao trm ti tiu 67

    TI LIU THAM KHO 70

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    3/72

    Trang 1

    CHNG 1. K THUT LP TRNH QUY

    Bi tp 1. Tm phn t Fibonacci th n

    Vit chng trnh tm phn t Fibonacci th n c nh ngha quy nh sau:

    1,21

    10,1)(

    nnFnF

    nnnF

    Ci t:#include

    #include

    /*Ham tra ve so nguyen tinh gia tri Fibonacci thu n*/

    int F(int n) {

    if(n==0 || n==1)

    return 1;else

    return F(n-1) + F(n-2);

    }

    /*Chuong trinh chinh*/

    void main() {

    clrscr();

    int n;

    coutn;

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    4/72

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    5/72

    Trang 3

    Bi tp 4. Tm c chung ln nht ca n s nguyn

    Vit chng trnh tm c chung ln nht ca n s nguyn dng 10 ,..., naa c nh

    ngha quy nh sau:

    1,1,,...,,

    1,,,...,

    201

    0

    10

    nnaaUCaUCLN

    nanaaUC

    nn

    n

    Ci t:

    #include #include

    /*Ham tra ve uoc chung lon nhat cua a va b*/

    int UCLN(int a, int b) {

    if(a==b)

    return a;

    else if(a>b)

    return UCLN(a-b,b);

    else

    return UCLN(a,b-a);

    }

    /*Ham tra ve uoc chung lon nhat cua n phan tu duoc luu tru trong mang 1 chieu a*/

    int UC(int a[], int n) {

    if(n==1)

    return a[0];

    else

    return UCLN(a[n-1],UC(a,n-1));

    }

    void main() {

    clrscr();

    int *a,n;

    coutn;

    a = new int[n];

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    6/72

    Trang 4

    Bi tp 5. Tnh n giai tha

    Vit chng trnh tnh n! c nh ngha quy nh sau:

    1,!1*

    0,1!

    nnn

    nn

    Ci t:#include

    #include

    /*Ham tra ve so nguyen tinh n! (Factorial)*/

    long int Fac(int n) {

    if(n==0)

    return 1;

    else

    return n*Fac(n-1);

    }

    /*Chuong trinh chinh*/

    void main() {

    clrscr();

    int n;

    coutn;

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    7/72

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    8/72

    Trang 6

    Bi tp 8. quy h tng

    Vit chng trnh tnh nX v nY c xc nh nh sau:

    11

    11

    0

    0

    2

    1

    1

    nnn

    nnn

    YXY

    YXX

    Y

    X

    Ci t:#include

    #include

    long int Y(int n);

    long int X(int n) {

    if(n==0)

    return 1;

    else

    return X(n-1) + Y(n-1);

    }

    long int Y(int n) {

    if(n==0)

    return 1;

    else

    return 2*X(n-1)*Y(n-1);

    }

    /*Chuong trinh chinh*/

    void main() {

    clrscr();

    int n;

    coutn;

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    9/72

    Trang 7

    Bi tp 9. Tch n phn t trong danh sch

    Vit chng trnh tnh tch n phn t 10 ,..., naa c nh ngha quy nh sau:

    1,1,,...,

    1,,,...,

    201

    0

    10 nnaaSa

    nanaaS

    nnn

    Ci t:#include

    #include

    /*Ham tra ve so nguyen tinh tich n phan tu trong mang a*/

    long int S(int a[], int n) {

    if(n==1)

    return a[0];

    else

    return a[n-1]*S(a,n-1);

    }/*Chuong trinh chinh*/

    void main() {

    clrscr();

    int *a,n;

    coutn;

    a = new int[n];

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    10/72

    Trang 8

    Bi tp 10. m s ln xut hin ca phn t x trong danh sch

    Vit chng trnh m s ln xut hin ca s nguyn x trong danh sch

    10 ,..., naaA vi n phn t. Thut ton quy c th hin nh sau:

    xanxnAFind

    xanxnAFind

    n

    xnAFind

    n

    n

    0,,1,

    0,,1,1

    0,0

    ,,

    Ci t:#include

    #include

    /*Ham tra ve so lan xuat hien cua x trong danh sach A*/

    int Find(int a[], int n, int x) {

    if(n==0)

    return 0;

    else

    if(a[n-1]==x)

    return 1+Find(a,n-1,x);

    else

    return Find(a,n-1,x);

    }

    /*Chuong trinh chinh*/

    void main() {

    clrscr();

    int *a,n,x;

    coutn;

    a = new int[n];

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    11/72

    Trang 9

    Bi tp 1 1 . Thp H Ni

    M t bi ton: chuyn n a t ct 1 sang ct 2 ly ct 3 lm trung gian. Th t cca c sp xp t nh n ln (a ln nm pha di).

    V d: n = 3 ta c cc bc chuyn 12, 13, 23, 12, 31, 32, 12.

    Ci t:#include "conio.h"

    #include "iostream.h"

    /*Thap Ha Noi*/

    void Move(int n, int a, int b) {

    if (n==1)

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    12/72

    Trang 10

    Bi tp 12. Lit k tt c dy nh phn di k

    Chnh hp lp chp k ca n phn t l mt nhm c th t gm k phn t ly t nphn t cho, trong mi phn t c th c mt 1, 2, , k ln trong nhm to

    thnh.

    Phng php: ta lit k tt c chnh hp c lp chp kca hai phn t 0 v 1. Khi ta s c tt c dy nh phn c di k.

    V d: minh ha dng cy vi k = 3.

    Ci t:#include "conio.h"

    #include "iostream.h"

    #define max 20

    int Luu[max];

    int k;

    /*Xuat ket qua ra man hinh*/

    void Out() {

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    13/72

    Trang 11

    }

    }

    /*Chuong trinh chinh*/

    void main() {

    clrscr();

    coutk;

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    14/72

    Trang 12

    Bi tp 13. Chnh hp khng lp chp k ca n phn t

    Chnh hp chp k ca n phn t ( nk ) l mt nhm c th t gm k phn t khcnhau c chn t n phn t cho.

    Phng php: lit k dy c di k v cc phn t trong dy c ly t tp hp {0,

    1, , n-1} cc phn t c a vo dy khng c php trng nhau.

    V d:n = 3 v k = 2 ta s c cc dy con {0,1}, {0,2}, {1,0}, {1,2}, {2,0} v {2,1}.

    Ci t:#include "conio.h"

    #include "iostream.h"

    #define max 20

    char DanhDau[max];

    int Luu[max];

    int n,k;

    /*Khoi tao cac bien*/void Init() {

    coutn;

    coutk;

    //khoi tao tat ca cac dinh chua duoc chon

    for(int i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    15/72

    Trang 13

    }

    }

    }

    /*Chuong trinh chinh*/

    void main() {

    clrscr();

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    16/72

    Trang 14

    Bi tp 14. Hon v mng s nguyn c n phn t

    Phng php: tng t phng php lm bi tp 13 nhng y ta thay tp hp {0, 1, , n-1} l tp hp gi tr n phn t ca mng v di ca dy l n.

    V d:n = 3 v A = {-1,0,1} ta s c cc dy con tng ng l {-1,0}, {-1,1}, {0,-1},

    {0,1}, {1,-1} v {1,0}.

    Ci t:#include "conio.h"

    #include "iostream.h"

    #define max 20

    char DanhDau[max]; //mang danh dau dinh duoc chon

    int Luu[max], A[max],n;

    /*Khoi tao cac bien*/

    void Init() {

    coutn;

    for(int i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    17/72

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    18/72

    Trang 16

    Bi tp 15. t n qun hu trn bn c vua

    M t bi ton: lit k tt c phng n t n qun hu trn bn c vua cp nn saocho n qun hu khng c php n nhau.

    V d: cho bn c vua cp 88 . Di y l 1 phng n t qun hu:

    Ci t:#include "conio.h"

    #include "iostream.h"

    #define max 20

    char a[max]; //danh dau cot

    char b[2*max-1]; //danh dau huong Dong-Bac

    charc[2*max-1]; //danh dau huong Tay-Bac

    int Luu[max]; //luu ket qua tim duoc

    int n;

    /*Khoi tao cac bien*/

    void Init() {

    coutn;

    //tat ca cac cot chua duoc chon

    for(int i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    19/72

    Trang 17

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    20/72

    Trang 18

    Bi tp 16. Mi tun

    M t bi ton: t qun m ti c v tr (x,y) trn bn c vua cp nn . Hy lit ktt c cc phng n qun m xut pht ti v tr (x,y) c th nhy n tt c cc khc

    trn bn c vi iu kin mi qun m ch c php i qua ng 1 ln.

    V d: cho bn c vua cp 88 . Ta c 2 phng n t qun m nh sau:

    Ci t:#include "iostream.h"

    #include "conio.h"

    #define max 10

    intA[max][max]; //Mang danh dau

    int B[max][max]; //Mang luu duong di

    intX[8]={-1,-2,-2,-1,1,2,2,1};intY[8]={-2,-1,1,2,2,1,-1,-2};

    intn, x, y, Dem=0;

    //Khoi tao

    void Init() {

    coutn;

    coutx;

    couty;for(int i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    21/72

    Trang 19

    void Out() {

    Dem++;

    for(int i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    22/72

    Trang 20

    CHNG 2. SP XP

    Bi tp 1. Thut ton Bubble Sort

    tng thut ton:xut pht t phn t cui danh sch ta tin hnh so snh vi phn

    t bn tri ca n. Nu phn t ang xt c kha nh hn phn t bn tri ca n tatin a n v bn tri ca dy bng cch hon v vi phn t bn tri ca n. Tip tc

    thc hin nh th i vi bi ton c n phn t th sau n 1 bc ta thu c danhsch tng dn.

    Vd: s dng thut ton Bubble Sort sp xp dy s {3, 10, 4, 6, 2, 6, 15, 3, 9,7} theo

    th t tng dn.

    Sau 9 bc lp ta thu c dy c sp xp: {2, 3, 3, 4, 6, 6, 7, 9, 10, 15}.

    Ci t:#include

    #include

    #define max 100

    //nhap mang

    void NhapMang(int A[],int n) {

    for(int i=0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    23/72

    Trang 21

    //hoan vi 2 phan tu

    void Swap(int &a,int &b) {

    int temp = a;

    a = b;

    b = temp;

    }

    //sap xep cac phan tuvoid BubbleSort(int A[],int n) {

    for(int i = 0; i < n-1; i++)

    for(int j = n-1; j > i; j--)

    if(A[j]

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    24/72

    Trang 22

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    25/72

    Trang 23

    Bi tp 2. Thut ton Selection Sort

    tng thut ton: xt dy n phn t 110 ,...,, naaa .

    Chn trong dy 110 ,...,, naaa ra phn t c kha nh nht v hon v n vi a0.

    Chn trong dy 121 ,...,, naaa ra phn t c kha nh nht v hon v n vi a1. C tip tc nh th sau n 1 bc ta thu c danh sch c th t.V d:

    Sau 9 bc lp ta thu c dy c sp xp: {2, 3, 4, 5, 6, 6, 7, 7, 8, 9}.

    Ci t:#include

    #include

    #define max 100//nhap mang

    void NhapMang(int A[],int n) {

    for(int i=0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    26/72

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    27/72

    Trang 25

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    28/72

    Trang 26

    Bi tp 3. Thut ton Insertion Sort

    tng thut ton: xt dy n phn t 110 ,...,, naaa .

    Xem dy gm 1 phn t a0 l dy c th t. Thm a1 vo dy c th t a0 sao cho dy mi a0, a1 l dy c th t. Nu a1 < a0 ta

    hon v a1 vi a0. Thm a2 vo dy c th t a0, a1 sao cho dy mi a0, a1, a2 l dy c th t. Tip tc nh th n n 1 bc ta s c dy c th t 110 ,...,, naaa .V d: s dng thut ton Insertion Sort sp xp dy {3,7,22,3,1,5,8,4,3,9} theo th t

    tng dn.

    Ci t:#include

    #include #define max 100

    //nhap mangvoid NhapMang(int A[],int n) {

    for(int i=0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    29/72

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    30/72

    Trang 28

    Bi tp 4. Thut ton Quick Sort

    tng thut ton: xt dy n phn t 110 ,...,, naaa .

    Bc 1: chn kha 2/RightLeftapivot .

    Bc 2: Phn vng. Nhng phn t nh hn kha th nm bn tri ca kha, nhng

    phn t ln hn kha th nm bn phi ca kha v nhng phn t bng khac th nm bt c ch no trn dy.

    Bc 3: sp xp cho c hai phn vng mi bn tri v bn phi.

    M t hot ng ca thut ton Quick Sort:

    Ci t:#include #include

    #define max 100

    void NhapMang(int A[],int n) {for(int i=0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    31/72

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    32/72

    Trang 30

    Bi tp 5. Thut ton Heap Sort

    Ta xem danh sch n phn t 110 ,...,, naaa l cy nh phn. Cy nh phn ny c xc

    nh nh sau: ti nt th i tng ng vi ch s th i ca mng c con tri l nt2*(i+1)-1 v con phi 2*(i+1) nu 2*(i+1)-1 v 2*(i+1) nh hn n. Thut ton c

    m t nh sau:- Xy dng Heap sao cho vi mi nt cha u c gi tr ln hn nt con. Khi nt

    gc l nt c gi tr ln nht.- Hon v nt gc vi nt th n 1 v xy dng li Heap mi vi n 2 nt v tip

    tc hon v nt gc vi nt l cui ca cy mi sau n 2 bc ta s thu c danhsch c sp xp theo th t.

    V d: xt danh sch trc khi sp xp0 1 2 3 4 5 6 7

    11 3 5 4 9 15 19 7

    Danh sch trn c th hin bng cy theo thut ton Heap Sort nh sau:

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    33/72

    Trang 31

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    34/72

    Trang 32

    Sau 7 bc ta thu c danh sch c sp xp

    0 1 2 3 4 5 6 7

    3 4 5 7 9 11 15 19

    Ci t:#include

    #include #define max 100

    void NhapMang(int A[],int n) {

    for(int i=0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    35/72

    Trang 33

    Largest = Right;

    if(i!=Largest) {

    Swap(A[i],A[Largest]);

    Heapify(A,n,Largest);

    }

    }

    //xay dung Heap sao cho moi nut cha luon lon hon nut con tren cayvoid BuildHeap(int A[], int n) {

    for(int i = n/2-1; i>=0; i--)

    Heapify(A,n,i);

    }

    void HeapSort(int A[], int n) {

    BuildHeap(A,n);

    for(int i = n-1; i>0; i--){

    Swap(A[0],A[i]);

    Heapify(A,i,0);

    }

    }

    void main() {

    int A[max], n;

    clrscr();

    coutn;

    NhapMang(A,n);

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    36/72

    Trang 34

    Bi tp 6. Thut ton Merge Sort

    M t bi ton: cho 2 danh sch A v B ln lt c m v n phn t sp xp theo th

    t. Bi ton t ra trn 2 danh sch A v B vi nhau thnh danh sch C cng l mtdanh sch c th t.

    Thut ton:

    Bc 1: khi to ba ch s chy trong vng lp i = 0, j = 0, k = 0 tng ng cho bamng A, B v C.

    Bc 2: ti mi bc nu c hai ch s (i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    37/72

    Trang 35

    k++;

    }

    if (i < m) {

    for (int p = i; p < m; p++) {

    C[k] = A[p];

    k++;

    }} else {

    for (int p = j; p < n; p++) {

    C[k] = B[p];

    k++;

    }

    }

    }

    void main() {

    int A[max],B[max],C[max],n,m,k;

    clrscr();

    coutn;

    coutm;

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    38/72

    Trang 36

    CHNG 3. I S MA TRN

    Bi tp 1. Nhp xut ma trn

    Phng php: ta t chc mng hai chiu lu tr cc phn t trong ma trn.Ci t:#include "conio.h"

    #include "iostream.h"

    #define max 100

    /*Nhap ma tran he so*/

    void NhapMaTran(float A[max][max], int m, int n) {

    for(int i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    39/72

    Trang 37

    Bi tp 2. Mt s php ton trn ma trn

    Cng ma hai ma trnCho ijaA v ijbB l hai ma trn cng cp nm . Khi BAC cng l

    ma trn cp nm v c xc nh bi njmibac ijijij 1,1, .

    Nhn hai ma trnCho ijaA l ma trn cp nm v jkbB l ma trn cp pn . Khi

    ikcBAC . l ma trn cp pm v c xc nh nh bi

    n

    jjkijik bac

    1

    vi

    mi ...,,1 v pk ...,,1 .

    Ci t:#include "conio.h"#include "iostream.h"

    #define max 100/*Nhap ma tran he so*/

    void NhapMaTran(float A[max][max], int m, int n, char ch) {

    for(int i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    40/72

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    41/72

    Trang 39

    Bi tp 3. H phng trnh tuyn tnh dng tam gic trn

    Cho h phng trnh tuyn tnh dng tam gic trn:

    B

    n

    X

    n

    A

    nn

    n

    n

    b

    b

    b

    x

    x

    x

    a

    aa

    aaa

    ......

    .....00

    ........

    .....0

    .....

    2

    1

    2

    1

    222

    11211

    niaaaaA iinn ,...,2,1,00...det 2211 .

    Nghim ca h trn c xc nh nh sau:

    1,...,2,1,1

    ,...,2,1,

    1

    nnixaba

    x

    a

    bx

    nibxa

    BAX

    n

    ijjiji

    iii

    nn

    nn

    i

    n

    ijjij

    Ci t:#include "conio.h"

    #include "iostream.h"

    #define max 100//Nhap ma tran tam giac tren

    void Nhap(float A[max][max],int n) {

    for(int i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    42/72

    Trang 40

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    43/72

    Trang 41

    coutn;

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    44/72

    Trang 42

    for(int j = 0; j

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    45/72

    Trang 43

    else {

    X[i] = B[i];

    for(int j=0; j

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    46/72

    Trang 44

    Bi tp 5. Thut ton phn r ma trn A = LU

    Qu trnh chuyn ho ma trn A ban u thnh tch hai ma trn tam gic UL. da vophp kh Gauss c thc hin bng cc php nhn ma trn. Thut ton ny c gil thut ton Crout. Qu trnh Crout bao gm nhiu bc hi quy. Nu ma trn A c

    cp nn ta cn 1n bc. Thut ton c th hin c th nh sau:

    nnT

    T

    n

    T

    n

    a

    a

    aCrout

    aULvwH

    w

    IvHv

    w

    A

    1

    11

    11

    1111

    110

    01

    1

    111

    11

    2

    222

    11211

    1

    21

    0

    01

    .....0

    ...........

    .....0

    .....

    1.....0

    ...........

    0.....1

    0.....01

    n

    T

    n

    nnn

    n

    n

    n

    A

    uul

    aa

    aa

    uuu

    l

    l

    I

    1

    111

    1111

    111

    112 0

    01

    0

    01

    n

    T

    nnn

    T

    n

    uu

    l

    uu

    lCrout

    ULULI

    ....

    00......

    00

    ....0

    ....

    ......

    0.....01

    0.....001

    2

    222

    11211

    21

    2

    3231

    21

    Crout

    uu

    uuu

    ll

    ll

    l

    n

    n

    n

    nn

    n

    AI

    UL.

    ....00

    ..........

    ....0

    ...

    1.....

    ...........

    0.....1

    0.....01

    222

    11211

    21

    21

    1

    nn

    n

    n

    nn

    n

    u

    uu

    uuu

    ll

    lCrout

    Thng qua 1n bc hi quy ta c ULA . vi L l ma trn tam gic di v Ul ma trn tam gic trn.Ci t:

    #include "conio.h"#include "iostream.h"

    #define max 100

    void Nhap(float A[max][max],int n) {

    for(int i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    47/72

    Trang 45

    }

    }

    void XuatMaTran(float A[max][max], int n) {

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    48/72

    Trang 46

    Bi tp 6. Gii h phng trnh tuyn tnh da vo phn r LU

    tng thut ton: cho h phng trnh tuyn tnh tng qut BXA . . Ta tin hnhphn r ULA . . Trong , L l ma trn tam gic di v U l ma trn tam gic trn.

    Khi ,

    YXUBYLBXULBXA

    .....

    Ci t:#include "conio.h"

    #include "iostream.h"

    #define max 100

    /*Nhap ma tran he so*/

    void Nhap(float A[max][max],int n) {

    for(int i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    49/72

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    50/72

    Trang 48

    L[i][k] = A[i][k]/U[k][k];

    U[k][i] = A[k][i];

    U[i][k] = 0;

    L[k][i] = 0;

    }

    for(i = k+1; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    51/72

    Trang 49

    Bi tp 7. nh thc ca ma trn

    tng thut ton: ta tin hnh phn r ma trn ULA . .

    Ta c: Det(A)=Det(L)*Det(U) m Det(L) = 1 nn Det(A) = Det(U).

    Ci t:

    #include "conio.h"#include "iostream.h"

    #define max 100

    /*Nhap ma tran*/

    void Nhap(float A[max][max],int n) {

    for(int i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    52/72

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    53/72

    Trang 51

    CHNG 4. MT S THUT GII TRN TH

    Bi tp 1 . Xt tnh lin thng ca th

    M t bi ton: cho th v hng G=(V,E) hy kim tra tnh lin thng ca th G.

    tng thut ton:

    Bc 1:xut pht t mt nh bt k ca th. Ta nh du nh xut pht v chuynsangBc 2.

    Bc 2: t mt nh i nh du, ta nh du nh j nu A[i,j] = 1 v j cha c nhdu v chuyn sangBc 3.

    Bc 3: thc hin Bc 2 cho n khi khng cn thc hin c na chuyn sangBc 4.

    Bc 4: kim tra nu snhnh du nh hn n (hay tn ti t nht mtnh cha cnh du) th s khng lin thng v ngc li th lin thng.

    M t d liu u vo v u ra ca bi ton:D liu vo: cho trong tp tin Bai1.inp

    - Dng u ghi s n l s nh ca mt th (0

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    54/72

    Trang 52

    Ci t:#include

    #include

    #include

    #define TenFile "Bai1.inp"

    //doc du lieu tu tap tin

    void Doc_File(int **A,int &n) {

    FILE*f = fopen(TenFile,"rb");

    fscanf(f,"%d",&n);

    *A = new int [n];

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    55/72

    Trang 53

    }

    }

    }while (ThanhCong == 0); //lap lai cho den khi khong con kha nang loan

    return 0;

    }

    //chuong trinh chinh

    void main(){

    clrscr();

    int **A,n;

    Doc_File(A,n);

    if (Lien_Thong(A,n)==1)

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    56/72

    Trang 54

    Bai2.inp OUTPUT

    6

    0 1 1 0 0 0

    1 0 1 0 0 0

    1 1 0 0 0 0

    0 0 0 0 1 1

    0 0 0 1 0 1

    0 0 0 1 1 0

    THANH PHAN

    LIEN THONG: 2

    Bai2.inp OUTPUT

    8

    0 1 0 0 0 1 0 0

    1 0 1 0 0 0 0 0

    0 1 0 1 0 0 0 0

    0 0 1 0 1 0 0 0

    0 0 0 1 0 1 0 0

    1 0 0 0 1 0 1 0

    0 0 0 0 0 1 0 1

    0 0 0 0 0 0 1 0

    THANH PHAN

    LIEN THONG: 1

    Ci t:#include

    #include

    #include

    #define TenFile "Bai2.inp"

    //doc du lieu tu tap tin

    void Doc_File(int **A,int &n) {

    FILE*f = fopen(TenFile,"rb");

    fscanf(f,"%d",&n);

    *A = new int [n];

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    57/72

    Trang 55

    int Dem=0, i,j, MLT=0;

    for( i = 0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    58/72

    Trang 56

    Bi tp 3. Tm mi ng i t gia hai nh

    M t bi ton: cho th v hng G=(V,E) hy xc nh mi ng i t nh D tinh C ca th G.

    tng thut ton: s dng k thut tm kim theo chiu su.

    M t d liu u vo v u ra ca bi ton:D liu vo: th lin thng v cho trong tp tin Bai3.inp

    - Dng u ghi s n l s nh ca mt th (0

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    59/72

    Trang 57

    FILE*f = fopen(FileIn,"rb");

    fscanf(f,"%d%d%d",&n,&D,&C);

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    60/72

    Trang 58

    L[SoCanh] = 0;

    DanhDau[i] = 0; //phuc hoi dinh da di qua

    }

    }

    }

    //chuong trinh chinh

    void main() {Doc_File();

    KhoiTao();

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    61/72

    Trang 59

    Bai4.inp OUTPUT

    5

    1

    0 1 0 0 0

    1 0 1 1 1

    0 1 0 1 0

    0 1 1 0 1

    0 1 0 1 0

    12345

    Ci t:#include

    #include

    #include

    #define FileIn "Bai4.inp"

    int Dem = 0; //dem so duong di

    int *L; //luu duong di

    char *DanhDau; //danh dau dinh da diint **A,n,D;

    //doc du lieu tu tap tin theo yeu cau cua bai toan

    void Doc_File() {

    FILE*f = fopen(FileIn,"rb");

    fscanf(f,"%d%d",&n,&D);

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    62/72

    Trang 60

    L[0] = D;

    }

    //xuat duong di ra man hinh

    void InDuongDi(int Dinh) {

    Dem++;

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    63/72

    Trang 61

    Bi tp 5. ng i Euler

    M t bi ton: cho th v hng G=(V,E) hy xc nh mi ng i qua tt c cccnh mi cnh ch qua duy nht 1 ln.

    tng thut ton: s dng k thut tm kim theo chiu su bng cch xa cnh

    i qua trong qu trnh tm kim ng i.

    M t d liu u vo v u ra ca bi ton:D liu vo: cho trong tp tin Bai5.inp

    - Dng u ghi s n l s nh ca mt th (03->4->5->2->1

    Ci t:#include

    #include

    #include #define Filename "Bai5.inp"

    int Dem = 0, SoCanh=0; //dem so duong di va luu so canh cua do thi

    int *L; //luu dinh da di quaint **A,n;

    int XuatPhat=0; //dinh xuat phat la dinh bac le neu do thi co dinh bac le

    void Doc_File() {

    int BacDinh;

    FILE*f = fopen(Filename,"rb");

    fscanf(f,"%d",&n);

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    64/72

    Trang 62

    if(A[i][j] == 1)

    BacDinh++;

    }

    if(BacDinh%2==1)

    XuatPhat = i; //xuat phat tu dinh bac le

    SoCanh+=BacDinh;

    cout

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    65/72

    Trang 63

    Bi tp 6. Thut ton Dijkstra tm ng i ngn nht

    M t bi ton: cho th v hng G=(V,E) hy xc nh ng i ngn nht t nhD ti nh C ca th G.

    tng thut ton: s dng thut ton Dijkstra.

    M t d liu u vo v u ra ca bi ton:D liu vo: th lin thng v cho trong tp tin Bai6.inp.

    - Dng u ghi s n l s nh ca mt th (0

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    66/72

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    67/72

    Trang 65

    Bi tp 7. Thut ton Prim tm cy bao trm ti tiu

    M t bi ton: cho th v hng c trng s G=(V,E) hy tm ng i sao cho ttc cc nh iu c ng i vi nhau v tng trng s ca ng i l nh nht. Tc l

    tm th con lin thng GG ' sao cho tng trng s ca G l nh nht.

    tng thut ton:

    Bc 1: xut pht t nh k bt k (thng thng chn nh u tin) chn mt cnh ctrng s nh nht lin k vinh k (min{A[k][j]}j=1..n) ta nh du 2 nh i quacnh v s cnh tm c l 1. Chuyn sangBc 2.

    Bc 2: tm cnh nh nht ca th viiu kin cnh tm c phi c 1 nh cha

    nh du v 1 nh nh du. Ngha l, ta tm min{A[i][j]}j=1..n, i=1..n saocho i nhu v j cha nh du trnh trng hp to thnh chu trnh

    con. Ta tng s cnh tm c ln 1 v chuyn sangBc 3.

    Bc 3: nu s cnh tm c bng n-1 kt thc thut ton, ngc li quay vBc 2.

    M t d liu u vo v u ra ca bi ton:D liu vo: lu trong tp tin Bai7.inp

    - Dng u ghi s n l s nh ca mt th (0

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    68/72

    Trang 66

    //doc du lieu tu tap tin

    void Doc_File(int A[max][max],int &n) {

    FILE*f = fopen(FileInt,rb);

    fscanf(f,%d,&n);

    for(int i =0;i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    69/72

    Trang 67

    L[Dem].x = i;

    L[Dem].y = j;

    }

    Sum+=min;

    D[L[Dem].y] = 1;

    Dem++;

    } while(Dem

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    70/72

    Trang 68

    V d:

    Bai8.inp Bai8.out8

    0 2 3 4 0 0 0 0

    2 0 3 0 4 0 0 0

    3 3 0 7 6 5 2 0

    4 0 7 0 0 0 3 00 4 6 0 0 4 0 8

    0 0 5 0 4 0 1 6

    0 0 2 3 0 1 0 5

    0 0 0 0 8 6 5 0

    20

    6 - 7

    1 - 2

    3 - 7

    1 - 34 - 7

    2 - 5

    7 - 8

    Ci t:#include

    #include

    #define FileInt "Bai8.inp"#define FileOut "Bai8.out"

    typedef struct Egde {

    int x,y;

    };

    //doc du lieu tu tap tin

    void Doc_File(int **A,int &n) {

    FILE*f = fopen(FileInt,"rb");

    fscanf(f,"%d",&n);

    *A = new int [n];

    for(int i =0;i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    71/72

    Trang 69

    int min = MAXINT, Dem = 0, Sum = 0, T = 0, Temp;

    for(int i=0; i

  • 8/6/2019 Gtth Lap Trinh Nang Cao_dhcl

    72/72

    TI LIU THAM KHO

    [1] Chu c Khnh, Nguyn Cam, L thuyt th, NXB i hc Quc giaTPHCM.

    [2]

    Dng Thy V, Gio trnh Phng php tnh, NXB KHKT.[3] Ngc Anh Th, Gio trnh thut ton, NXB Thng k.[4] Ng c Tn,L thuyt t hp v th, NXB H Quc gia H Ni.[5] Dng V Diu Tr, Nguyn Tin Huy, Trn an Th, V Mnh Trng, Cm

    nang thut ton, NXB KHKT.

    [6] Xun Li, Cu trc d liu & Gii thut, 1995.[7] Nguyn c Ngha, T Vn Thnh, Ton ri rc, 1997.[8] A.V. Aho, J.E. Hopcroft, J.D. Ullman, Data Structures and Algorithms, Addison

    Wesley, 1983.

    [9] Jeffrey H Kingston,Algorithms and Data Structures, Addison-Wesley, 1998.