Nhóm bài tập: Trịnh Mạnh Cường (20080408) lớp Tin Pháp Nguyễn Ngọc Giang (2008 phần

mềm . ) lớp Công nghệ

Bài 1:Liệt kê tất cả cách sắp xếp 8 con hậu vào bàn cờ 64 ô sao cho chúng không ăn được nhau (dùng đệ quy)

# include <stdio.h> #include <conio.h> int i=0; int BanCo[8][8]; int dem=0 ; void Xoa() { for(int i=0;i<8;i++) for(int j=0;j<8;j++) BanCo[i][j]=0; } void In() { for(int i=0;i<8;i++) { printf("\n"); for(int j=0;j<8;j++)

y++) if((x-y==i-j||x+y==i+j)&&(BanCo[x][y]==1)) return false.j)&&KTDC(i. . } } bool KTC(int i.x<i.j) co the dat duoc hau // Kiem tra theo cot tai vi tri (I.x<i. if(i<7) DatHau(i+1).printf("%d ".j<8. return true.x++) for(int y=0. } bool KTDC(int i.int j) khong { for(int x=0. return true.j)) { BanCo[i][j]=1.x++) if(BanCo[x][j]==1) return false.int j) { for(int x=0. } void DatHau(int i) { // Dat hau vao ban co // Kiem tra theo duong cheo tai vi tri (I.j) co the dat hau khong for(int j=0.y<8.BanCo[i][j]).j++) if(KTC(i.

} .else { printf("\n\n"). } } void main() { Xoa(). ++dem. DatHau(0). } BanCo[i][j]=0.dem). // DatHang(). getch(). printf("\n %d ". In(). printf ("\n \n So cach xep 8 con hau vao ban co 64 o la:").

Bài 2:Liệt kê tất cả cách sắp xếp 8 con hậu vào bàn cờ 64 ô sao cho chúng không ăn được nhau (Dùng Stack) # include <stdio. }. int dem=0 . int BanCo[8][8]. #define MAX 100 #define true 1 #define false 0 struct stack { int top. const static int nodes(MAX).h> #include "conio.h" int i=0. // tao stack de luu tru thong tin .

} else { ps->top +=1 . else return(ps->nodes[ps->top--]).j<8. void Xoa() { for(int i=0. } void In() .int Empty(stack *ps) { if (ps->top == .j++) BanCo[i][j]=0.i++) for(int j=0. } struct stack S. int x) { // luu tru gia tri x vao stack if (ps->top ==MAX -1) { printf("\n stack full”).i<8. } void Push(stack *ps . ps->nodes[ps->top] =x.1) // Kiem tra stack co rong khong return (true). return(false). } } int Pop(stack *ps) // Truy xuat du lieu tu stack { if(Empty(ps) ) printf("\n stack is empty").

i).j<8. for(int j=0. } void DatHau (int i) // Dat hau vao ban co { for (int j=0. .x<i. return true.j)&&KTDC(i.x<i.x++) if(BanCo[x][j]==1) return false.j++ ) if (KTC(i. } } bool KTC(int i.int j) // Kiem tra theo cot tai vi tri (I. while (i<7) { Push (&S. i+=1.j++) printf("%d ".{ for(int i=0. } bool KTDC(int i.y<8.j) co the dat hau khong { for(int x=0.j)) { BanCo[i][j]=1.BanCo[i][j]).int j) // Kiem tra theo duong cheo tai vi tri (I.i<8.y++) if((x-y==i-j||x+y==i+j)&&(BanCo[x][y]==1)) return false.x++) for(int y=0.i++) { printf("\n").j<8. return true.j) co the dat duoc hau khong { for(int x=0.

++dem. printf("\n %d ". } } } void main() { Xoa(). In ().} printf ("\n \n"). printf ("\n \n So cach xep 8 con hau vao ban co 64 o la:"). getch().dem). while (!Empty(&S)) { Pop (&S). BanCo[i][j]=0. } . DatHau(0).

Sign up to vote on this title
UsefulNot useful