Chatbox

Các bạn vui lòng dùng từ ngữ lịch sự và có văn hóa,sử dụng Tiếng Việt có dấu chuẩn. Chúc các bạn vui vẻ!
17/10/2011 15:10 # 1
phuongnll
Cấp độ: 6 - Kỹ năng: 3

Kinh nghiệm: 55/60 (92%)
Kĩ năng: 11/30 (37%)
Ngày gia nhập: 17/08/2011
Bài gởi: 205
Được cảm ơn: 41
Cần Giúp đở làm Đồ Án cơ sở nghành



Bạn nói giúp mà ko đưa bài lên thì ai giúp đc gì cho bạn...
Vui lòng úp dãy số ma trận của bạn lên để các bạn khác hỗ trợ bạn nhá.

Mình đưa ra bài demo cho bạn xem trước nhá.

Xin lỗi trong bản điều khiển của DTU ko có thẻ PHP để chèn code vào nên mình để phần code vào trong thẻ trích dẫn để các bạn dễ thấy, mong các bạn thông cảm.




Trích:

VD: bài tập demo

Bai1.inp Kết quả:
6 DUONG DI NGAN NHAT LA: 5
1 6 1->2->4->6
0 1 2 0 0 0
1 0 2 2 3 0
2 2 0 5 4 0
0 2 5 0 3 2
0 3 4 3 0 4
0 0 0 2 4 0

Bai1.inp Kết quả:
6 DUONG DI NGAN NHAT LA: 8
1 6 1->2->4->6
0 1 4 0 0 0
1 0 2 6 5 0
4 2 0 7 3 0
0 6 7 0 0 1
0 5 3 0 0 3
0 0 0 1 3 0


#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <values.h>
#define FileIn "Bai1.inp"
/*Đọc file dữ liệu bài toán*/
void Doc_File(int**A, int &n, int &D, int &C){
   FILE*f = fopen(FileIn,"rb");
   fscanf(f,"%d%d%d",&n,&D,&C);
   cout<<"Ma Tran Lien Ket Tuong Ung.\n"<<D<<" "<<C<<endl;
   *A = new int [n];
   for(int i =0;i<n;i++) {
      A[i] = new int [n];
      for(int j =0;j<n;j++) {
         fscanf(f,"%d",&A[i][j]);
         cout<<A[i][j]<<" ";
      }
      cout<<endl;
   }
   fclose(f);
   D--; C--;
}
/*Thuật toán Dijkstra tìm đường đi ngắn nhẩt từ đỉnh D đến đỉnh C*/
void Dijkstra(int **A, int n, int D, int C) {
   char *DanhDau = new char[n];
   int *Nhan = new int[n];
   int *Truoc = new int[n];
   int XP, min;
   for(int i=0; i<n; i++){
      Nhan[i] = MAXINT;
      DanhDau[i] = 0;
      Truoc[i] = D;
   }
   Nhan[D] = 0;
   DanhDau[D] = 1;
   XP = D;
   while(XP != C){
      for(int j=0; j<n; j++)
      if(A[XP][j]>0 && Nhan[j]>A[XP][j]+Nhan[XP] && DanhDau[j]==0) {
         Nhan[j] = A[XP][j]+Nhan[XP];
         Truoc[j] = XP;
      }
      min = MAXINT;
      for(j = 0; j<n; j++)
      if(min>Nhan[j]&& DanhDau[j]==0){
         min = Nhan[j] ;
         XP = j ;
      }
      DanhDau[XP] = 1;
   }
   cout<<”Duong Di Ngan Nhat La:”<<Nhan[C]<<endl;
   cout<<C+1<<” <- “<<Truoc[C]+1;
   i = Truoc[C];
   while(i!=D){
      i = Truoc[i];
      cout<<” <- “<<i+1;
   }
}
/*Chương trình chính*/
void main() {
   int**A,n,Dau,Cuoi;
   Doc_File(A,n,Dau,Cuoi);
   Dijkstra(A,n,Dau,Cuoi);
   delete*A;
   getch();
}

 



 
Các thành viên đã Thank phuongnll vì Bài viết có ích:
17/10/2011 15:10 # 2
ngadaiza910
Cấp độ: 2 - Kỹ năng: 1

Kinh nghiệm: 0/20 (0%)
Kĩ năng: 1/10 (10%)
Ngày gia nhập: 26/02/2011
Bài gởi: 10
Được cảm ơn: 1
Phản hồi: Cần Giúp đở làm Đồ Án cơ sở nghành


Thế mới ác mình ko có cái bài cụ thể, mai thì nọp đề cương rồi,  bạn nào giúp được cái đề cương, code thì giúp mình sau củng được thank nhìu 



 
17/10/2011 16:10 # 3
anh2bmw
Cấp độ: 48 - Kỹ năng: 44

Kinh nghiệm: 255/480 (53%)
Kĩ năng: 408/440 (93%)
Ngày gia nhập: 27/11/2009
Bài gởi: 11535
Được cảm ơn: 9868
Phản hồi: Cần Giúp đở làm Đồ Án cơ sở nghành


Trích:
Thế mới ác mình ko có cái bài cụ thể, mai thì nọp đề cương rồi,  bạn nào giúp được cái đề cương, code thì giúp mình sau củng được thank nhìu 
  Vì đó là đổ án, đòi hỏi bạn phải tìm tòi và nghiên cứu thêm. Về cách thức làm đề cương có thể hỏi giáo viên hướng dẫn hoặc các bạn trong lớp. Code thì ko hiểu chổ nào hoặc làm sai thì có thể đưa lên để anh em giúp đỡ. Cố gắng tự làm trước rồi sau đó hỏi tiếp nha :D


Thông tin liên hệ anh2bmw khi có bất kỳ thắc mắc:
skype: trantien281
mail: 
anh2bmw@gmail.com


 

 
17/10/2011 16:10 # 4
hoangquytcd2
Cấp độ: 10 - Kỹ năng: 10

Kinh nghiệm: 87/100 (87%)
Kĩ năng: 89/100 (89%)
Ngày gia nhập: 17/10/2010
Bài gởi: 537
Được cảm ơn: 539
Cần Giúp đở làm Đồ Án cơ sở nghành


Trích:

Thuật toán tìm đường đi ngắn nhất – Dijkstra     ci có thể giúp làm đề cương với thank nhìu :((:((

 Tìm tòi đi, đề cương thì tự làm còn code ko hiểu chỗ nào thì hỏi chứ chú e cứ chờ đợi thế này thì ko kịp đâu


 Hoàng Quý 
Face book: Hoang Quy
FanPage: Flash Mob Đà Nẵng
Thông tin liên lạc:
Sđt:01262797976
Yh/Skype:hoangquytcd2
Mail:hoangquytcd2@gmail.com

 
17/10/2011 22:10 # 5
ngadaiza910
Cấp độ: 2 - Kỹ năng: 1

Kinh nghiệm: 0/20 (0%)
Kĩ năng: 1/10 (10%)
Ngày gia nhập: 26/02/2011
Bài gởi: 10
Được cảm ơn: 1
Cần Giúp đở làm Đồ Án cơ sở nghành


 Nếu biết bài cụ thể thì hay bít mấy, để mai lên hỏi lại thầy hướng dẫn đã, còn có gì thì mong các bác giúp sức  them, Thank trước :):)



 
17/10/2011 22:10 # 6
ngadaiza910
Cấp độ: 2 - Kỹ năng: 1

Kinh nghiệm: 0/20 (0%)
Kĩ năng: 1/10 (10%)
Ngày gia nhập: 26/02/2011
Bài gởi: 10
Được cảm ơn: 1
Cần Giúp đở làm Đồ Án cơ sở nghành


Trích:

Bạn nói giúp mà ko đưa bài lên thì ai giúp đc gì cho bạn...
Vui lòng úp dãy số ma trận của bạn lên để các bạn khác hỗ trợ bạn nhá.

Mình đưa ra bài demo cho bạn xem trước nhá.

Xin lỗi trong bản điều khiển của DTU ko có thẻ PHP để chèn code vào nên mình để phần code vào trong thẻ trích dẫn để các bạn dễ thấy, mong các bạn thông cảm.




Trích:

VD: bài tập demo

Bai1.inp Kết quả:
6 DUONG DI NGAN NHAT LA: 5
1 6 1->2->4->6
0 1 2 0 0 0
1 0 2 2 3 0
2 2 0 5 4 0
0 2 5 0 3 2
0 3 4 3 0 4
0 0 0 2 4 0

Bai1.inp Kết quả:
6 DUONG DI NGAN NHAT LA: 8
1 6 1->2->4->6
0 1 4 0 0 0
1 0 2 6 5 0
4 2 0 7 3 0
0 6 7 0 0 1
0 5 3 0 0 3
0 0 0 1 3 0


#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <values.h>
#define FileIn "Bai1.inp"
/*Đọc file dữ liệu bài toán*/
void Doc_File(int**A, int &n, int &D, int &C){
   FILE*f = fopen(FileIn,"rb");
   fscanf(f,"%d%d%d",&n,&D,&C);
   cout<<"Ma Tran Lien Ket Tuong Ung.\n"<<D<<" "<<C<<endl;
   *A = new int [n];
   for(int i =0;i<n;i++) {
      A[i] = new int [n];
      for(int j =0;j<n;j++) {
         fscanf(f,"%d",&A[i][j]);
         cout<<A[i][j]<<" ";
      }
      cout<<endl;
   }
   fclose(f);
   D--; C--;
}
/*Thuật toán Dijkstra tìm đường đi ngắn nhẩt từ đỉnh D đến đỉnh C*/
void Dijkstra(int **A, int n, int D, int C) {
   char *DanhDau = new char[n];
   int *Nhan = new int[n];
   int *Truoc = new int[n];
   int XP, min;
   for(int i=0; i<n; i++){
      Nhan[i] = MAXINT;
      DanhDau[i] = 0;
      Truoc[i] = D;
   }
   Nhan[D] = 0;
   DanhDau[D] = 1;
   XP = D;
   while(XP != C){
      for(int j=0; j<n; j++)
      if(A[XP][j]>0 && Nhan[j]>A[XP][j]+Nhan[XP] && DanhDau[j]==0) {
         Nhan[j] = A[XP][j]+Nhan[XP];
         Truoc[j] = XP;
      }
      min = MAXINT;
      for(j = 0; j<n; j++)
      if(min>Nhan[j]&& DanhDau[j]==0){
         min = Nhan[j] ;
         XP = j ;
      }
      DanhDau[XP] = 1;
   }
   cout<<”Duong Di Ngan Nhat La:”<<Nhan[C]<<endl;
   cout<<C+1<<” <- “<<Truoc[C]+1;
   i = Truoc[C];
   while(i!=D){
      i = Truoc[i];
      cout<<” <- “<<i+1;
   }
}
/*Chương trình chính*/
void main() {
   int**A,n,Dau,Cuoi;
   Doc_File(A,n,Dau,Cuoi);
   Dijkstra(A,n,Dau,Cuoi);
   delete*A;
   getch();
}

 Mình ko hiểu bài toán này lắm bạn có thể giải thích thêm ko ?  Thank Nhiều !
 



 
Copyright© Đại học Duy Tân 2010 - 2024