DIỄN ĐÀN TOÁN TIN
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.



 
CỔNG ĐHQGHN  XEM ĐIỂM  Trang ChínhTrang Chính  Latest imagesLatest images  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  
Bài gửi sau cùng
Bài gửiNgười gửiThời gian
Happy new year 2013 Sat Dec 29, 2012 3:45 pm
Lâu rùi anh không thấy chú nào vào diễn đàn nữa Mon May 07, 2012 9:26 am
Happy new year 2012. Mon Jan 30, 2012 5:05 am
[color=red]Tin "Cực Hot" cho tất cả các bạn và người thân[/color] Wed Oct 05, 2011 4:44 am
Cách đổi lịch âm dương Mon Oct 03, 2011 2:24 am
lâu lâu rùi không lên diễn đàn lớp mình chém gió Fri Sep 30, 2011 9:44 am
TRIỂN LÃM DU HỌC NHẬT BẢN 2010 Vừa học vừa làm thu nhập 1700USD/1 tháng Wed Sep 28, 2011 8:00 am
Vừa đi làm, vừa làm cộng tác viên kiếm tiền... Sun Aug 07, 2011 11:37 am
:(((((((((((((((((((((((((((((((((((((((((((((((((((((((( Sat Aug 06, 2011 5:05 am
Khánh thành website học tiếng anh của Chiến Fri Aug 05, 2011 10:30 am
Funy : Counter strike =)) Mon Jul 25, 2011 10:43 am
Lịch học hè Fri Jul 08, 2011 4:11 pm
Tổng hợp ảnh 24/06/2011 - Lễ tốt nghiệp Wed Jul 06, 2011 9:17 am
Câu lạc bộ tiếng anh của Chiến - cơ hội giao lưu người bản xứ Tue Jun 28, 2011 9:41 pm
[K52A3] CÔNG BỐ TÀI CHÍNH QUỸ LỚP (10/03/2011) Thu Jun 23, 2011 5:35 pm
[VPK] DANH SÁCH TỐT NGHIỆP CHÍNH THỨC Thu Jun 23, 2011 5:31 pm
[VPK] LỄ TRAO BẰNG TỐT NGHIỆP Wed Jun 22, 2011 11:59 am
Pic 21/06 (new and hot) Wed Jun 22, 2011 10:28 am
Gameloft Hà Nội tuyển dụng Mon Jun 20, 2011 8:18 pm
[ CTCTSV ] 21 THÁNG 6 ĐI LẤY HỒ SƠ TỐT NGHIỆP Sat Jun 18, 2011 9:38 am

 

 bài lập trình ngựa đi tuần

Go down 
4 posters
Tác giảThông điệp
hunghanam
Quan Nhất Phẩm
Quan Nhất Phẩm
hunghanam


Tổng số bài gửi : 129
Sinh nhật : 05/11/1989

bài lập trình ngựa đi tuần Empty
Bài gửiTiêu đề: bài lập trình ngựa đi tuần   bài lập trình ngựa đi tuần EmptySat Mar 27, 2010 7:43 am

/* CHUONG TRINH LAP TRINH C "NGUA DI TUAN"
tac gia: LE VAN HUNG
lop: K52A3
chuyen nganh: TOAN TIN UNG DUNG
*/
#include<conio.h>
#include<stdio.h>
#include<math.h>
#define n 8
int h[n][n];
int a[n]={2,1,-1,-2,-2,-1,1,2};
int b[n]={1,2,2,1,-1,-2,-2,-1};
void khoi_tao()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
h[i][j]=0;
}
}
}
//void in_mang()
//{
//for(int i=0;i<n;i++)
//{
// printf("%d ",a[i]);
//}
//}
void in_matran()
{
for(int i=1;i<=n;i++)
{
for(int j =1;j<=n;j++)
{
printf("%5d",h[i][j]);
}
printf("\n");
}
}
void ngua_tuan(int i,int x,int y)//buoc thu i,toa do x, toa do y
{
int u,v;
for(int k=0;k<n;k++)
{
u=x+a[k];
v=y+b[k];
if(1<=u&&u<=n&&1<=v&&v<=n&&h[u][v]==0)
{
h[u][v]=i;
if(i==n*n){in_matran();getch();}
else {ngua_tuan(i+1,u,v); h[u][v]=0;}

}

}

}
int main()
{
printf("\n\t CHAO MUNG BAN DA DEN VOI BAI LAP TRINH CUA TUI\n");
khoi_tao();
//h[][]=?;
ngua_tuan(2,1,1);

//in_mang();
getch();
return 0;
}
note: bài có đúng một chỗ là ngựa chưa nhảy được 1 ô "chỗ ấy mấy hôm trước khi mình gửi cho nhân thì nhân đã sửa thành công rùi" ,các bạn chỉ cần chú ý chỗ in đậm màu xanh cuối cùng là ok sửa đi cái là xong thui
Về Đầu Trang Go down
Spammer
Quan Nhị Phẩm
Quan Nhị Phẩm
Spammer


Tổng số bài gửi : 103
Sinh nhật : 12/10/1989

bài lập trình ngựa đi tuần Empty
Bài gửiTiêu đề: Re: bài lập trình ngựa đi tuần   bài lập trình ngựa đi tuần EmptySat Mar 27, 2010 8:59 pm

hunghanam đã viết:
/* CHUONG TRINH LAP TRINH C "NGUA DI TUAN"
tac gia: LE VAN HUNG
lop: K52A3
chuyen nganh: TOAN TIN UNG DUNG
*/
#include
#include
#include
#define n 8
int h[n][n];
int a[n]={2,1,-1,-2,-2,-1,1,2};
int b[n]={1,2,2,1,-1,-2,-2,-1};
void khoi_tao()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
h[i][j]=0;
}
}
}
//void in_mang()
//{
//for(int i=0;i
//{
// printf("%d ",a[i]);
//}
//}
void in_matran()
{
for(int i=1;i<=n;i++)
{
for(int j =1;j<=n;j++)
{
printf("%5d",h[i][j]);
}
printf("\n");
}
}
void ngua_tuan(int i,int x,int y)//buoc thu i,toa do x, toa do y
{
int u,v;
for(int k=0;k
{
u=x+a[k];
v=y+b[k];
if(1<=u&&u<=n&&1<=v&&v<=n&&h[u][v]==0)
{
h[u][v]=i;
if(i==n*n){in_matran();getch();}
else {ngua_tuan(i+1,u,v); h[u][v]=0;}

}

}

}
int main()
{
printf("\n\t CHAO MUNG BAN DA DEN VOI BAI LAP TRINH CUA TUI\n");
khoi_tao();
//h[][]=?;
ngua_tuan(2,1,1);

//in_mang();
getch();
return 0;
}
note: bài có đúng một chỗ là ngựa chưa nhảy được 1 ô "chỗ ấy mấy hôm trước khi mình gửi cho nhân thì nhân đã sửa thành công rùi" ,các bạn chỉ cần chú ý chỗ in đậm màu xanh cuối cùng là ok sửa đi cái là xong thui



Cái lỗi đó là do khi khởi tạo duyệt ô đầu tiên Hưng nó chưa đánh dấu là đã duyêt nên ô đó đi qua rồi nhưng chưa được đánh số

h[x][y]=1;
ngua_tuan(2,x,y);
Về Đầu Trang Go down
Che..vankhe
Đại Tổng Quản
Đại Tổng Quản
Che..vankhe


Tổng số bài gửi : 129
Sinh nhật : 09/07/1989

bài lập trình ngựa đi tuần Empty
Bài gửiTiêu đề: Re: bài lập trình ngựa đi tuần   bài lập trình ngựa đi tuần EmptySat Mar 27, 2010 10:36 pm

bài này cho kêt quả khi bắt đầu duyệt tại (1-1) hoặc (7-7).
Nhưng thử xp từ (1-4),(2-5),(4-3)... thì có lẽ là đơ máy mà vẫn chưa ra cái chi mô cả. Đã test trên Core i3 rùi mà ko dc j cả ,,hixxxxxxxx (CPU luôn là 100%)
Về Đầu Trang Go down
cuongcnb
Đại Tổng Quản
Đại Tổng Quản
cuongcnb


Tổng số bài gửi : 91
Sinh nhật : 22/12/1989

bài lập trình ngựa đi tuần Empty
Bài gửiTiêu đề: Re: bài lập trình ngựa đi tuần   bài lập trình ngựa đi tuần EmptySun Mar 28, 2010 6:36 am

uhm. Nếu muốn cho nó đi tuần với tất cả mọi ví trí thì tham khảo code này. Tất nhiên với input không tốt nó sẽ chạy lâu một chút vì độ phức tạp của bải toán này rất lớn. Tớ chỉ cho in một kết quả mà thui.

#include"iostream"

using std::cout;
using std::cin;
using std::endl;

int ok=0;

static int a[8]= {-2, -1, 1, 2, 2, 1, -1, -2};
static int b[8]= {-1, -2, -2, -1, 1, 2, 2, 1};
static int mark[8][8];

class Horse{
private:
int xCoordinate;
int yCoordinate;

public:
int init(){
for(int i=0; i<8; i++)
for(int j=0; j<8;j++)
mark[i][j]=0;
}

void select(){
mark[yCoordinate][xCoordinate]= 1;
}
void showValue(){
cout<<<" "<<
}

void unSelect(){
mark[yCoordinate][xCoordinate]= 0;
}

int testMark(int x, int y){
return mark[y][x];
}


void setValue(int x, int y){
xCoordinate= x;
yCoordinate= y;
}

void setValue(int i, Horse
horse){
xCoordinate= horse.xCoordinate + a[i];
yCoordinate= horse.yCoordinate + b[i];
}

void print(){
cout<<"("<<<", "<<<") ";
}


int testValue(int i){
if(xCoordinate+ a[i]>7 ||xCoordinate+ a[i] < 0||yCoordinate+ b[i]>7
|| yCoordinate+ b[i] < 0)return 0;
else if(testMark(xCoordinate+ a[i], yCoordinate+ b[i]))return 0;
else
return 1;

}

};


Horse horse[64];

void
result(){
int i;
for(i=0; i<64; i++)
horse[i].print();
cout<<"\n\n";
}

void
patrol(int i){// di tuan
if(ok)return;
int j;
for(j=0; j<8; j++)
if(horse[i].testValue(j)){
if(ok)return;
horse[i+1].setValue(j,horse[i]);
horse[i+1].select();
if(i+1== 63){result();ok=1;return ;}
patrol(i+1);
horse[i+1].unSelect();

}

}

int main(){

int x,y;

cout<<"Enter a current coordinate of
horse: (x,y)= "
;
cin>>x>>y;
horse[0].setValue(x,y);
horse[0].init();
horse[0].select();
patrol(0);
system("pause");


}
Về Đầu Trang Go down
Spammer
Quan Nhị Phẩm
Quan Nhị Phẩm
Spammer


Tổng số bài gửi : 103
Sinh nhật : 12/10/1989

bài lập trình ngựa đi tuần Empty
Bài gửiTiêu đề: Re: bài lập trình ngựa đi tuần   bài lập trình ngựa đi tuần EmptyMon Mar 29, 2010 7:15 pm

cuongcnb đã viết:
uhm. Nếu muốn cho nó đi tuần với tất cả mọi ví trí thì tham khảo code này. Tất nhiên với input không tốt nó sẽ chạy lâu một chút vì độ phức tạp của bải toán này rất lớn. Tớ chỉ cho in một kết quả mà thui.

#include"iostream"

using std::cout;
using std::cin;
using std::endl;

int ok=0;

static int a[8]= {-2, -1, 1, 2, 2, 1, -1, -2};
static int b[8]= {-1, -2, -2, -1, 1, 2, 2, 1};
static int mark[8][8];

class Horse{
private:
int xCoordinate;
int yCoordinate;

public:
int init(){
for(int i=0; i<8; i++)
for(int j=0; j<8;j++)
mark[i][j]=0;
}

void select(){
mark[yCoordinate][xCoordinate]= 1;
}
void showValue(){
cout<<<" "<<
}

void unSelect(){
mark[yCoordinate][xCoordinate]= 0;
}

int testMark(int x, int y){
return mark[y][x];
}


void setValue(int x, int y){
xCoordinate= x;
yCoordinate= y;
}

void setValue(int i, Horse
horse){
xCoordinate= horse.xCoordinate + a[i];
yCoordinate= horse.yCoordinate + b[i];
}

void print(){
cout<<"("<<<", "<<<") ";
}


int testValue(int i){
if(xCoordinate+ a[i]>7 ||xCoordinate+ a[i] < 0||yCoordinate+ b[i]>7
|| yCoordinate+ b[i] < 0)return 0;
else if(testMark(xCoordinate+ a[i], yCoordinate+ b[i]))return 0;
else
return 1;

}

};


Horse horse[64];

void
result(){
int i;
for(i=0; i<64; i++)
horse[i].print();
cout<<"\n\n";
}

void
patrol(int i){// di tuan
if(ok)return;
int j;
for(j=0; j<8; j++)
if(horse[i].testValue(j)){
if(ok)return;
horse[i+1].setValue(j,horse[i]);
horse[i+1].select();
if(i+1== 63){result();ok=1;return ;}
patrol(i+1);
horse[i+1].unSelect();

}

}

int main(){

int x,y;

cout<<"Enter a current coordinate of
horse: (x,y)= "
;
cin>>x>>y;
horse[0].setValue(x,y);
horse[0].init();
horse[0].select();
patrol(0);
system("pause");


}
Theo em thì code nào chả thế.Độ phức tạp là như nhau mà. bài lập trình ngựa đi tuần 812681 bài lập trình ngựa đi tuần 812681 bài lập trình ngựa đi tuần 812681 bài lập trình ngựa đi tuần 812681 bài lập trình ngựa đi tuần 812681
Về Đầu Trang Go down
Sponsored content





bài lập trình ngựa đi tuần Empty
Bài gửiTiêu đề: Re: bài lập trình ngựa đi tuần   bài lập trình ngựa đi tuần Empty

Về Đầu Trang Go down
 
bài lập trình ngựa đi tuần
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Thư giãn cuối tuần (gặp nhau cuối tuần new)
» Phòng ngừa sốt rét
» Giao trinh :"Lập trình Turbo Prolog 2.0" của tác giả Phan Trương Dần
» Hoa Trinh Nữ (Xấu hổ) và sự tích hoa Trinh Nữ
» chú tuần lôc mũi đỏ

Permissions in this forum:Bạn không có quyền trả lời bài viết
DIỄN ĐÀN TOÁN TIN :: CÁC VẤN ĐỀ CHUNG :: KÌ HỌC 2 NĂM THỨ III :: THIẾT KẾ & ĐÁNH GIÁ THUẬT TOÁN-
Chuyển đến 
Free forum | ©phpBB | Free forum support | Báo cáo lạm dụng | Thảo luận mới nhất