IT05
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

IT05

Lớp CNTT05A - ĐH Đồng Tháp
 
Trang ChínhPortalGalleryLatest imagesTìm kiếmĐăng kýĐăng Nhập

 

 THAP HA NOI

Go down 
Tác giảThông điệp
nebulafire

nebulafire


Tổng số bài gửi : 25
Join date : 06/02/2010
Age : 37

THAP HA NOI Empty
Bài gửiTiêu đề: THAP HA NOI   THAP HA NOI I_icon_minitimeSun Feb 21, 2010 7:54 pm

Code:

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#define MAX_ELE 100
#define TRUE 1
#define FALSE 0

struct data {
   int N;
   int x, y, z;
};
typedef struct data DATA;
struct stack {
   int n;
   DATA nodes[MAX_ELE];
};


typedef struct stack STACK;

// tao ngan xep rong
void init(STACK &stack) {
   stack.n=0;
}

// kiem tra ngan xep rong
int empty(STACK stack) {
   return (stack.n==0 ? TRUE : FALSE);
}

int full(STACK stack){
   return (stack.n== MAX_ELE ? TRUE : FALSE);
}
// chen phan tu vao stack
void push(STACK &stack, DATA info) {
   if (full(stack))
      printf("Ngan xep bi day.");
   else
      stack.nodes[++stack.n] = info;
}

//loai phan tu ra khoi stack
DATA pop (STACK &stack) {
   DATA x;
   if(empty(stack))
      printf("Danh sach khong co phan tu.");
   else
      x = stack.nodes[stack.n--];
   return x;
}
// ham di chuyen thap ha noi
void move(DATA X) {
   DATA data, temp;
   STACK stack;
   init(stack);
   push(stack,X);
   do {
      data=pop(stack); //Lay phan tu dau
      if (data.N==1)
         printf("\nChuyen 1 dia: %d --> %d",data.x,data.y);
      else {
         //Luu cho loi goi Move(N-1,z,y,x)
         temp.N=data.N-1;
         temp.x=data.z;
         temp.y=data.y;
         temp.z=data.x;
         push(stack,temp);
         // Luu cho loi goi Move(1,x,y,z)
         temp.N=1;
         temp.x=data.x;
         temp.y=data.y;
         temp.z=data.z;
         push(stack,temp);
         // Luu cho loi goi Move(N-1,x,z,y)
         temp.N=data.N-1;
         temp.x=data.x;
         temp.y=data.z;
         temp.z=data.y;
         push(stack,temp);
      }
   } while (!empty(stack));
}
void create_data(int N, int x, int y, int z, DATA &X){
   X.N = N;
   X.x = x;
   X.y = y;
   X.z = z;
}
void main()
{
clrscr();
int n;
DATA X;
create_data(3,1,2,3,X);
move(X);
getch();
}
Về Đầu Trang Go down
 
THAP HA NOI
Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
IT05 :: SOURCE - CODE CHƯƠNG TRÌNH :: C/C++-
Chuyển đến