Thiết kế và đánh giá thuật toán - 25

else

Try(i+1); daxet[j] = 0;

c -= matran[pa[i-1]][j];

}

}

void inmt()

{

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

{

puts("");

Có thể bạn quan tâm!

Xem toàn bộ 205 trang tài liệu này.

for(int j=0; j<=n; j++) printf("%3d", matran[i][j]);

}

Thiết kế và đánh giá thuật toán - 25

}

int main()

{

DocDL();

daxet[1] = 1;

pa[1] = 1;

c = 0; Try(2);

getch();

}

7. Cài đặt thuật toán thiết kế theo kỹ thuật nhánh cận giải bài toán người bán hàng.

/* Dữ liệu lưu trong tệp NguoiBanHang.txt: ghi số thành phố và ma trận chi phí*/

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#define max 100 int n;

int matran[max][max]; int daxet[max];

int pa[max]; int chiphi; void DocDL()

{

FILE *f;

f = fopen("NguoiBanHang.txt", "r"); if(!f)

{

puts("Loi mo tep"); getch();

exit(0);

}

fscanf(f, "%d", &n); int i, j;

for(i=1; i<=n; i++) for(j=1; j<=n; j++)

fscanf(f, "%d", &matran[i][j]); fclose(f);

}

void InPa()

{

int j;

for(j=1; j<=n; j++) printf("%d -> ", pa[j]);

printf("%d - %d", pa[n+1], chiphi);

}

void Try(int i, int c)

{

int j;

190

int c1;

for(j=2; j<=n; j++)

{

if(!daxet[j] && matran[pa[i-1]][j])

{

c1 = c + matran[pa[i-1]][j]; if(c1<chiphi)

{

pa[i] = j; daxet[j] = 1; c = c1; if(i==n)

{

if(matran[pa[n]][1] && (c+ matran[pa[n]][1]) < chiphi)

{

pa[n+1] = 1;

chiphi = c+ matran[pa[n]][1];

}

}

else

Try(i+1, c); daxet[j] = 0;

}

}

}

}

int main()

{

DocDL();

pa[1] = 1;

daxet[1] = 1;

191

chiphi = 1000;

Try(2, 0);

InPa();

getch();

}

8.Cài đặt thuật toán thiết kế theo kỹ thuật quy hoạch động giải bài toán máy trả tiền ATM.

/* Dữ liệu lưu trong tệp DoiTien.txt: ghi mệnh giá n loại tiền, số tiền cần rút*/

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#define max 100 int n, soTien;

int T[max]; int pa[max];

int B[max][max]; void DocDL()

{

FILE *f;

f = fopen("DoiTien.txt", "r"); if(!f)

{

puts("Loi doc tep"); getch();

exit(0);

}

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

fscanf(f, "%d", &soTien); int i;

for(i=1; i<=n; i++) fscanf(f, "%d", &T[i]);

192

fclose(f);

}

int Min(int a, int b)

{

if(a<b)

return a; else

return b;

}

void QHD()

{

int i, j;

for(j=1; j<=soTien; j++) B[0][j] = 32767;

for(i=1; i<=n; i++) for(j=1; j<=soTien; j++)

{

if(j<T[i])

B[i][j] = B[i-1][j];

else

B[i][j] = Min(B[i-1][j], 1+ B[i][j-T[i]]);

}

}

void TruyVet()

{

int i, j;

i = n; j = soTien; int k;

k = 1;

while(i && (j>0))

{

if(B[i][j] == B[i-1][j]) i--;

if(B[i][j] == (1 + B[i][j-T[i]]))

{

j -= T[i];

pa[k] = i; k++;

}

}

}

void InPA()

{

int i; i = 1;

while(pa[i])

{

printf("%3d", T[pa[i]]); i++;

}

}

main()

{

DocDL();

QHD();

TruyVet(); InPA();

getch();

}

TÀI LIỆU THAM KHẢO

[1]. Đỗ Xuân Lôi, Cấu trúc dữ liệu và giải thuật, Nhà xuất bản Đại học quốc gia Hà Nội, 2004

[2]. Nguyễn Đức Nghĩa - Nguyễn Tô Thành, Toán rời rạc, Nhà xuất bản Đại học quốc gia Hà Nội, 2003

[3]. Robert Sedgewick, Cẩm nang thuật toán, NXB Khoa học kỹ thuật, 2004.

[4]. Chủ biên Ngọc Anh Thư, Nhóm dịch Nguyễn Tiến, Nguyễn Văn Hoài, Nguyễn Hữu Bình, Đặng Xuân Hường, Ngô Quốc Việt, Trương Ngọc Vân: Giáo trình Thuật toán, NXB Thống kê, 2002

[5]. Nhóm dịch Trần Đan Thư, Vũ Mạnh Tường, Dương Vũ Diệu Trà, Nguyễn Tiến Huy: Cẩm nang Thuật toán, NXB Khoa học và Kỹ thuật, 1998

[6]. Hà Huy Khoái, Nhập môn số học thuật toán, NXB Khoa học kỹ thuật, 1997.

[7].Giải thuật và Lập trình, Lê Minh Hoàng, Đại học Sư phạm Hà Nội, 2002.

[8]. Trần Tuấn Minh, Thiết kế và đánh giá thuật toán, Đại học Đà lạt, 2002

[9]. Đinh Mạnh Tường, Cấu trúc dữ liệu & Thuật toán, Nhà xuất bản khoa học và kĩ thuật, 2001

[10]. Nguyễn Xuân Huy, Thuật toán, Nhà xuất bản thống kê, 1988

[11]. Thomas H. Cormen:Introduction to Algorithms, Second Edition, 2001

[12]. Robert Sedgewick, Algorightms 2nd Edition, ISBN: 0201066734, Addison Wesley, 1988.

[13]. Niklaus Wirth, Algorithms and Data Structures, Prentice-Hall, 1986

[14]. Donald E. Knuth, Selected papers on analysis of algorithms, LeLand Stanford Junior University, 2000

[15]. Gregory L.Heileman, Data structures, algorithms, and object – oreinted programing, McGraw – Hill, 1996

Xem tất cả 205 trang.

Ngày đăng: 16/07/2022
Trang chủ Tài liệu miễn phí