Bài Tập Và Lời Giải ( Code ) Môn Cấu Trúc Dữ Liệu Và Giải Thuật Nâng Cao

16 196 1
Bài Tập Và Lời Giải ( Code ) Môn Cấu Trúc Dữ Liệu Và Giải Thuật Nâng Cao

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài tâp 1: Viet chuong trinh dinh nghia cau truc stack voi cac thao tac tuong ung Su dung cau truc stack va cac thao tac da cai dat de luu tru n so nguyen duoc nhap tu ban phim . Lay cac gia tri ra khoi stack va hien thi ra man hinh. Bài tập 2 : Tìm kiếm theo chiều rộng Bài tập 3 : Thuật toán tìm kiếm A Bài tập 4: Thuật toán Best First Search Bài tập 5: Thuật toán nhánh cận ( Bài tập : Người du lịch )

Bài tâp 1: Viet chuong trinh dinh nghia cau truc stack voi cac thao tac tuong ung Su dung cau truc stack va cac thao tac da cai dat de luu tru n so nguyen duoc nhap tu ban phim Lay cac gia tri khoi stack va hien thi man hinh Bài tập : Tìm kiếm theo chiều rộng Bài tập : Thuật tốn tìm kiếm A* Bài tập 4: Thuật toán Best First Search Bài tập 5: Thuật toán nhánh cận ( Bài tập : Người du lịch ) Lời Giải Bài : Viet chuong trinh dinh nghia cau truc stack voi cac thao tac tuong ung Su dung cau truc stack va cac thao tac da cai dat de luu tru n so nguyen duoc nhap tu ban phim Lay cac gia tri khoi stack va hien thi man hinh CODE: #include #include using namespace std; #define MAX 100 // Tao Node struct Node{ int data; Node* next; }; // Tao cau truc ngan xep struct Stack{ Node* top; }; // Khoi tao ngan xep void Init(Stack &s){ s.top = NULL; } // Kiem tra rong int IsEmpty(Stack s){ if (s.top==NULL) return 1; return 0; } // Tao nut Node* createnode(int x){ Node* p=new Node; if(p==NULL) return NULL; p->data=x; p->next=NULL; return p; } // Dau vao void Push(Stack &s, int x){ Node* p=createnode(x); if (IsEmpty(s)==1) s.top=p; else { p->next=s.top; s.top=p; } } // dau int Pop(Stack &s){ int x; Node* p=s.top; if (IsEmpty(s)==1) return 0; x=p->data; s.top=s.top->next; delete p; return x; } int Search(Stack s, int x){ for (Node* p=s.top; p!=NULL; p=p->next) if (p->data==x) return 1; return 0; } #define SIZE const int X = 32767; char Label[7] = {'A','B','C','D','E','F','G'}; int main(){ int T[7][7] = {{0, 1, 1, X, X, X, X}, {1, 0, X, 1, 1, X, X}, {1, X, 0, X, X, 1, 1}, {X, 1, X, 0, X, X, X}, {X, 1, X, X, 0, X, X}, {X, X, 1, X, X, 0, X}, {X, X, 1, X, X, X, 0}}; int u, v, start = 0, goal = 5, ok=0; int Close[SIZE]={0}; // Chua dinh nao duoc phat trien int Father[SIZE]; //Father[i] = chi so dinh cha cua i Stack OP; Init(OP); Push(OP, start); while (!IsEmpty(OP)){ //lay u la trang thai o dau hang doi u = Pop(OP); //Kiem tra u co phai trang thai dich if (u==goal){ ok = 1; break; } //Luu u vao danh Close - de xac dinh u da duoc phat trien Close[u] = 1; //xet lan luot v cua u for (v=SIZE; v>=0; v ) if (T[u][v]==1) if (Search(OP, v)==0 && Close[v]==0){ Push(OP, v); Father[v] = u; } } if (ok==1){ cout data==x) return 1; return 0; } // Huy hang doi void huy(Queue &q){ while(q.pHead!=NULL){ Node *p=q.pHead; q.pHead=q.pHead->next; delete p; } q.pTail==NULL; } const int X = 32767; char Label[7] = {'A','B','C','D','E','F','G'}; int main(){ int T[7][7] = {{0, 1, 1, X, X, X, X}, {1, 0, X, 1, 1, X, X}, {1, X, 0, X, X, 1, 1}, {X, 1, X, 0, X, X, X}, {X, 1, X, X, 0, X, X}, {X, X, 1, X, X, 0, X}, {X, X, 1, X, X, X, 0}}; int u, v, start = 0, goal = 3, ok=0; int Close[7]={0}; // Chua dinh nao duoc phat trien int Father[7]; //Father[i] = chi so dinh cha cua i Queue OP; Init(OP); Node *p =taonut(start); Add(OP, p); while (OP.pHead!=NULL){ //lay u la trang thai o dau hang doi u = Remove(OP); //Kiem tra u co phai trang thai dich if (u==goal){ ok = 1; break; } //Luu u vao danh Close - de xac dinh u da duoc phat trien Close[u] = 1; //xet lan luot v cua u for (v=0; v finsh; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) shichiki >> a[i][j]; } } shichiki.close(); } void printfmaxtric(int a[100][100], int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout

Ngày đăng: 13/04/2020, 10:53

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan