Windows Việt

Cộng Đồng Công Nghệ Thông Tin Việt

Trang ChínhTrang Chính  Sự kiện  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Share
 
 Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS
Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
daokiem_votinh64
Member

daokiem_votinh64
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 556
Coins Coins : 2157
Thanked Thanked : 168
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

Lâu lâu quay lại forum thấy anh em học hành chăm chỉ quá mà thiếu đồ nghề nên ra tay nghĩa hiệp(há há)
Nhằm đánh dấu sự quay trở lại của em,em xin gửi tăng các bác source BFS +LCBFS+UCS.Mong anh em học hành tốt hơn và "lết" qua được môn này.
Và cùng có 1 câu nhắn gửi các bác là "hàng mẫu không bán",vì bán là 0 điểm cả nhà sản xuất.
Mem nài thấy hay và ý nghĩa thì cho em vài cái Thank coi như kích lệ tinh thần em hen.

BFS.
Code:

// LCBFS.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#define max 100
struct MyGraph
{
   int n;
   int a[max][max];
   int previous[max];
};
struct QUEUE
{
   int *QArray;
   int QMax;
   int QNumItems;
   int QFront;
   int QRear;
};
int InitQueue(QUEUE &q,int MaxItems)
{
   q.QArray=new int [MaxItems];
   if(q.QArray==NULL)
      return 0;
   q.QMax=MaxItems;
   q.QNumItems=0;
   q.QRear=q.QFront=-1;
   return 1;
}
int IsQueueEmpty(const QUEUE &q)
{
   if(q.QNumItems==0)
      return 1;
   return 0;
}
int IsQueueFull(const QUEUE &q)
{
   if(q.QMax==q.QNumItems)
      return 1;
   return 0;
}
int EnQueue(QUEUE &q,int newitem)
{
   if(IsQueueFull(q))
      return 0;
   q.QRear++;
   if(q.QRear==q.QMax)
      q.QRear=0;
   q.QArray[q.QRear]=newitem;
   if(IsQueueEmpty(q))
      q.QFront=0;
   q.QNumItems++;
   return 1;
}
int DeQueue(QUEUE &q,int &outitem)
{
   if(IsQueueEmpty(q))
      return 0;
   outitem=q.QArray[q.QFront];
   q.QFront++;
   q.QNumItems--;
   if(q.QFront==q.QMax)
      q.QFront=0;
   if(IsQueueEmpty(q))
      q.QFront=q.QRear=-1;
   return 1;
}
void InputGraph(MyGraph &g,char* filename,int &start,int &end)
{
   FILE *f=fopen(filename,"rt");
   if(f==NULL)
   {
      printf("loi doc file ");
      return ;
   }
   fscanf(f,"%d",&g.n);
   fscanf(f,"%d",&start);
   fscanf(f,"%d",&end);
   for(int i=0;i<g.n;i++)
   {
      for(int j=0;j<g.n;j++)
      {
         fscanf(f,"%d",&g.a[i][j]);
      }
   }
   fclose(f);
   for(i =0;i<g.n;i++)
      g.previous[i]=-1;
}
void PrintPath(MyGraph g, int end)
{
   printf("%d", end);
   int i = end;
   do
   {
      i = g.previous[i];
      printf(" <- %d",i);
   }while(i!=0);
}
int BFS(MyGraph &g, int start, int end)
{
   int flag=0;
   QUEUE q;
   InitQueue(q,max);
   EnQueue(q,start);
   int p;
   while(!IsQueueEmpty(q))
   {
      DeQueue(q,p);
       for(int i=0;i<g.n;i++)
      {
         if(g.a[p][i]!=0 && g.previous[i]==-1)
         {
            g.previous[i]=p;
            EnQueue(q,i);
            if(i==end)
               flag=1;
         }
         
      }
   }
   return flag;
}
int main(int argc, char* argv[])
{
   MyGraph g;
   int start,end;
   InputGraph(g,"h:\\input.txt",start,end);
   if(BFS(g,start,end)==1)
      PrintPath(g,end);
   return 0;
}


Bài này cơ bản nhưng em làm chưa đầy đủ lắm,chưa kiếm tra hét các điều kiện,và xuất đường đi ngược -> các bác cải thiện giúp em hen

LCBFS

Code:

// BFS.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#define max 100
int cost_max;
struct MyGraph
{
   int n;
   int a[max][max];
   int previous[max];
};
struct QUEUE
{
   int *QArray;
   int QMax;
   int QNumItems;
   int QFront;
   int QRear;
};
int InitQueue(QUEUE &q,int MaxItems)
{
   q.QArray=new int [MaxItems];
   if(q.QArray==NULL)
      return 0;
   q.QMax=MaxItems;
   q.QNumItems=0;
   q.QRear=q.QFront=-1;
   return 1;
}
int IsQueueEmpty(const QUEUE &q)
{
   if(q.QNumItems==0)
      return 1;
   return 0;
}
int IsQueueFull(const QUEUE &q)
{
   if(q.QMax==q.QNumItems)
      return 1;
   return 0;
}
int EnQueue(QUEUE &q,int newitem)
{
   if(IsQueueFull(q))
      return 0;
   q.QRear++;
   if(q.QRear==q.QMax)
      q.QRear=0;
   q.QArray[q.QRear]=newitem;
   if(IsQueueEmpty(q))
      q.QFront=0;
   q.QNumItems++;
   return 1;
}
int DeQueue(QUEUE &q,int &outitem)
{
   if(IsQueueEmpty(q))
      return 0;
   outitem=q.QArray[q.QFront];
   q.QFront++;
   q.QNumItems--;
   if(q.QFront==q.QMax)
      q.QFront=0;
   if(IsQueueEmpty(q))
      q.QFront=q.QRear=-1;
   return 1;
}
void InputGraph(MyGraph &g,char* filename,int &start,int &end)
{
   FILE *f=fopen(filename,"rt");
   if(f==NULL)
   {
      printf("loi doc file ");
      return ;
   }
   fscanf(f,"%d",&g.n);
   fscanf(f,"%d",&start);
   fscanf(f,"%d",&end);
   for(int i=0;i<g.n;i++)
   {
      for(int j=0;j<g.n;j++)
      {
         fscanf(f,"%d",&g.a[i][j]);
      }
   }
   fclose(f);
   for(i =0;i<g.n;i++)
      g.previous[i]=-1;
}
int LCBFS(MyGraph &g, int start, int end)
{
   int flag=0;
   QUEUE q;
   InitQueue(q,max);
   EnQueue(q,start);
   int p;
   int cost[max];
   for(int i=0;i<g.n;i++)
      cost[i]=-1;
   cost[start]=0;
   while(!IsQueueEmpty(q))
   {
      DeQueue(q,p);
       for(int j=0;j<g.n;j++)
      {
         if(g.a[p][j]!=0 &&(cost[j]==-1||(cost[p]+g.a[p][j])<cost[j]))
         {
            g.previous[j]=p;
            EnQueue(q,j);
            cost[j]=cost[p]+g.a[p][j];
            if(j==end)
            {
               flag=1;
               cost_max=cost[end];
            }
         }
         
      }
   }
   return flag;
}
struct STACK{
   int *Stkarray;
   int Stkmax;
   int Stktop;
};
int InitStack(STACK &s, int Maxitems)
{
   s.Stkarray = new int [Maxitems];
   if(s.Stkarray==NULL){
      return 0;
   }
   s.Stkmax = Maxitems;
   s.Stktop = -1;
   return 1;
}
int IsStackEmpty(STACK &s)
{
   if(s.Stktop==-1)
      return 1;
   return 0;

}
int IsStackFull(STACK &s)
{
   if(s.Stkmax == s.Stktop -1)
      return 1;
   return 0;
}
int PushStack(STACK &s,int newitems)
{
   if(IsStackFull(s))
      return 0;
   s.Stktop++;
   s.Stkarray[s.Stktop] = newitems;
   return 1;
}
int PopStack(STACK &s,int &outitems)
{
   if(IsStackEmpty(s))
      return 0;
   outitems = s.Stkarray[s.Stktop];
   s.Stktop--;
   return 1;
}
int Pop(STACK &s)
{
   if(IsStackEmpty(s)){
      printf("\nStack rong! \n");
      return 0;
   }
   else{
      int temp=s.Stkarray[s.Stktop];
      s.Stktop--;
      return temp;
   }
}
int StackTop(STACK &s,int &outitems)
{
   if(IsStackEmpty(s))
      return 0;
   outitems = s.Stkarray[s.Stktop];
   return 1;

}
void PrintPath(MyGraph g,int start,int end,char* filename)
{
   FILE*f = fopen(filename,"wt");
   fprintf(f," %d\n",cost_max);
   STACK s;
   InitStack(s,100);
    int i=end;
   PushStack(s,end);
    while(i>-1){
      i=g.previous[i];
      if(i>=0)
         PushStack(s,i);
    }
   int k;
   do{
      PopStack(s,k);
         fprintf(f," %d ",k);
    }while(!IsStackEmpty(s));
   fclose(f);
}

int main(int argc, char* argv[])
{
   MyGraph g;
   int start,end;
   InputGraph(g,"h:\\input.txt",start,end);
   if(LCBFS(g,start,end))
        PrintPath(g,start,end,"h:\\output.txt");
  else{
       printf("\nKhong co duong di! ");
      cost_max=-1;
      FILE* f = fopen(argv[2],"wt");
      cost_max=-1;
      fprintf(f," %d\n",cost_max);
      fprintf(f," %d %d ",start,start);
      fclose(f);
  }
  return 0;
}


Bài này em làm có phần hoàn chỉnh hơn,dẫu rằng sẽ có pác kiếm ra lỗi của em.

UCS
Code:

//

#include "stdafx.h"
#include "stdio.h"
#include "conio.h"

#define MAX 100

struct MYGRAPH
{
   int N;
   int A[MAX][MAX];
};

struct ELEMENT
{
   int vertex;
   int cost;
   int previous;
};


struct QUEUE
{
   ELEMENT *QArray;
   int QMax;
   int QNumItems;
   int QFront;
   int QRear;
};

int InitQueue( QUEUE &q, int MaxItems)
{
   q.QArray = new ELEMENT[MaxItems];
   if( q.QArray == NULL)
      return 0;
   q.QMax = MaxItems;
   q.QNumItems = 0;
   q.QFront = q.QRear = -1;
   return 1;
}

int IsQueueEmpty( const QUEUE &q)
{
   if( q.QNumItems == 0)
      return 1;
   return 0;
}

int IsQueueFull( const QUEUE &q)
{
   if( q.QNumItems == q.QMax)
      return 1;
   return 0;
}

int EnQueue( QUEUE &q, ELEMENT newitem)
{
   if( IsQueueFull( q))
      return 0;
   q.QRear++;
   if( q.QRear == q.QMax)
      q.QRear = 0;
   q.QArray[q.QRear] = newitem;
   if( IsQueueEmpty( q))
      q.QFront = 0;
   q.QNumItems++;
   return 1;
}

int DeQueue( QUEUE &q, ELEMENT &outitem)
{
   if( IsQueueEmpty( q))
      return 0;
   int min = q.QFront;
   
   int isReach = 0;
   for( int i = q.QFront + 1; i < q.QNumItems; i++)
   {
      if(q.QArray[i].cost < q.QArray[min].cost)
         min = i;
      if(i == q.QRear)
      {
         isReach = 1;
         break;
      }
   }
   if( isReach == 0)
   {
      for( int i = 0; i < q.QRear; i++)
         if( q.QArray[i].cost < q.QArray[min].cost)
            min = i;
   }
   outitem = q.QArray[min];
   
   q.QArray[min] = q.QArray[q.QRear];
   q.QNumItems--;
   if(q.QFront == q.QMax)
      q.QFront = 0;
   if( IsQueueEmpty( q))
      q.QFront = q.QRear = -1;
   else
   {
      q.QRear--;
      if(q.QRear < 0)
         q.QRear = q.QMax - 1;
   }
   return 1;
}

int QueueFront( QUEUE &q, ELEMENT &outitem)
{
   if( IsQueueEmpty( q))
      return 0;
   outitem = q.QArray[q.QFront];
   return 1;
}

int QueueRear( QUEUE &q, ELEMENT &outitem)
{
   if( IsQueueEmpty( q))
      return 0;
   outitem = q.QArray[q.QRear];
   return 1;
}

bool InputGraph( MYGRAPH &g, char *fn, int &start, int &end)
{
   FILE *f = fopen( fn, "rt");
   if( f == NULL)
      return false;
   fscanf( f,"%d", &g.N);
   fscanf( f,"%d", &start);
   fscanf( f,"%d", &end);
   for( int i = 0; i < g.N; i++)
   {
      for( int j = 0; j < g.N; j++)

         fscanf( f,"%d", &g.A[i][j]);
   }
   return true;
}

ELEMENT Close[MAX];
int k = 0;
QUEUE q;

bool kTraThuoc( int x)
{
   for(int i = 0; i < k; i++)
            if( x == Close[i].vertex)
               return true;
   return false;
}

int UCS( MYGRAPH &graph, int start, int end)
{
   ELEMENT x;
   x.vertex = start;
   x.cost = 0;
   x.previous = -1;

   if(start == end)
   {
      Close[0] = x;
      k++;
      q.QArray = NULL;
      return 1;
   }
   InitQueue(q,graph.N);

   for(int b = 0; b < graph.N; b++)
      Close[b].vertex = -1;

   EnQueue(q,x);

   while( !IsQueueEmpty( q))
   {
      do
      {
         DeQueue(q,x);
         if( x.vertex == end)
         {
            Close[k++] = x;
            return 1;   
         }
      }
      while(kTraThuoc( x.vertex));

      Close[k++] = x;
      for( int j = 0; j < graph.N; j++)
         if( graph.A[x.vertex][j] > 0)
            if(!kTraThuoc( j))
               {
                  ELEMENT temp;
                  temp.vertex = j;
                  temp.cost = x.cost + graph.A[x.vertex][j];
                  temp.previous = k-1;
                  EnQueue(q,temp);
               }
   }
   return 0;
}

void PrintPath( MYGRAPH g, int end)
{
   int path[MAX];
   int len = 0;
   path[len++] = Close[k-1].vertex;
   int prev = Close[k-1].previous;
   while(prev != -1)
   {
      path[len++] = Close[prev].vertex;
      prev = Close[prev].previous;
   }
   
   for(int i = len - 1; i > 0; i--)
      printf( "%d->", path[i]);
   printf( "%d",path[i]);
   printf( "\nTong chi phi duong di:%4d", Close[k-1].cost);
}

bool OutputGraph( MYGRAPH &g, char *fn, int &start, int &end)
{
   FILE *f = fopen( fn, "wt");
   if( f == NULL)
      return false;
   if(!UCS(g, start, end))
   {
      fprintf(f,"%d", -1);
      return true;
   }
   int path[MAX];
   int len = 0;
   path[len++] = Close[k-1].vertex;
   int prev = Close[k-1].previous;
   while(prev != -1)
   {
      path[len++] = Close[prev].vertex;
      prev = Close[prev].previous;
   }
   fprintf( f, "%4d\n" ,Close[k-1].cost);

      for(int i = len - 1; i > 0; i--)
      
         fprintf( f, "%4d", path[i]);
      
   fprintf( f, "%4d", path[i]);
   return true;
   
}

int main(int argc, char* argv[])
{
   MYGRAPH g;
   int start,end;
   if(!InputGraph( g, "h://input.txt", start, end))
      printf("Khong doc file duoc");
   int kQ = UCS( g, start, end);
   if(!OutputGraph( g, "h://output.txt", start, end))
      printf("Khong ghi file duoc");;
   return 0;
}

Còn em cuối cùng này là hoàn chỉnh nhẩt của em nhưng lại chay trên đồ thị là ma trân kê chứ không phải bản đồ chữ cái như thầy
các bác vất vả chuyển sang bên kia giúp em hen

các bác có thể chạy thử bài ucs với đồ thị này
12
0 11
0 0 0 0 3 9 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 0 1 8 0 2 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 9 0
0 0 0 2 0 0 0 0 0 0 0 5
0 0 0 0 0 0 0 0 4 4 0 0
0 0 0 0 0 0 0 0 0 15 0 0
0 0 0 0 0 0 0 0 0 0 3 0
0 0 0 0 0 0 5 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0


có 1 pác chơi form rùi,bác nữa lại chơi 1/2,nên em chơi kiểu này chắc các pác k chém em đâu hen.
Bài UCS trên đồ thị thành phố hân hạnh giới thiệu vào 1 ngày đẹp troi dẫu biết rằng em còn bưởi

※ Bài viết cùng chuyên mục


Tác giảThông điệp
changtraisitinh
Member

changtraisitinh
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 405
Coins Coins : 914
Thanked Thanked : 113
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

thế này thì còn gì bằng>>>?
thanks !


>>> bom


Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Vtc14653vtc13203nohacks

※ Bài viết cùng chuyên mục


https://windows.forumvi.com
Tác giảThông điệp
kitsudo
Member

kitsudo
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 235
Coins Coins : 581
Thanked Thanked : 59
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

Trích dẫn :
các bác có thể chạy thử bài ucs với đồ thị này
12
0 11
0 0 0 0 3 9 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 0 1 8 0 2 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 9 0
0 0 0 2 0 0 0 0 0 0 0 5
0 0 0 0 0 0 0 0 4 4 0 0
0 0 0 0 0 0 0 0 0 15 0 0
0 0 0 0 0 0 0 0 0 0 3 0
0 0 0 0 0 0 5 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 3 9 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 0 1 8 0 2 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 9 0
0 0 0 2 0 0 0 0 0 0 0 5
0 0 0 0 0 0 0 0 4 4 0 0 // chỗ này nên là 0 phải ko?
0 0 0 0 0 0 0 0 0 15 0 0
0 0 0 0 0 0 0 0 0 0 3 0
0 0 0 0 0 0 5 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0

hoặc
0 0 0 0 3 9 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 0 1 8 0 2 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 9 0
0 0 0 2 0 0 0 0 0 0 0 5
0 0 0 0 0 0 0 0 4 4 0 0
0 0 0 0 0 0 0 0 0 15 0 0 // chỗ này nên là 4 phải ko?
0 0 0 0 0 0 0 0 0 0 3 0
0 0 0 0 0 0 5 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0


Ôi 1 Thời Để Nhớ....
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS D17a3615b53458dd72b310f<br>

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Trần Ngọc Anh
Member

Trần Ngọc Anh
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 279
Coins Coins : 691
Thanked Thanked : 64
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

Còn đây là cách đưa từ bản đồ chữ cái sang ma trận kề (ma trận số)

Code:


void DocTapTin(MYGRAPH &g,char *filename )
{
   FILE * f = fopen(filename,"rt");
   if(f==NULL)
   {
      printf("Khong Mo Duoc File");
      return ;
   }

   fscanf(f,"%d\n",&g.n );//lay so dinh
   char s[MAX];mang luu dong se doc
   fgets(s,MAX,f);//Doc 1 dong khi gap \n thi dung lai,hoac khi du MAX ki tu thi dung lai
   char *temp;//con tro luu cac ki tu cat duoc
   temp=strtok(s,"\n");//cat  \n,
   g.xuatphat.Ten=temp[0];// ta co mang(M," ",T)
   g.dichden.Ten =temp[2];
   int i=0;
   while(feof(f)==0)//Doc khi chua het tap tin, cai nay trong file hd xu ly file co:d
   {
      fgets(s,50,f);//tuong tu o tren
      temp=strtok(s," ");//strtok cat bo chuoi den ki tu o trong " " va lay phia truoc, con phia sau gan cho  NULL
      g.DSTP[i].Ten =temp[0];
      temp=strtok(NULL," ");// tiep tuc lay truoc ki tu  " "phia sau( luc nay toan bo chuoi phia sau gan cho NULL)
      g.DSTP[i].x=atoi(temp);
      temp=strtok(NULL," ");
      g.DSTP[i].y =atoi(temp);
      int j=0;
      g.DSTP[i].soluongTPKe =0;
      temp = strtok (NULL," ");
      while (temp != NULL)//temp ==NULL la het dong
      {
         g.DSTP[i].soluongTPKe ++;//tang so luong ke cua moi tp thu i
         g.DSTP[i].ListTPKe[j]=temp[0];//bien j chay theo so luong TP ke cua moi tp i
         j++;
         temp = strtok (NULL," ");
      }
      i ++;
   }
   fclose(f);
}//sau khi doc xong file ta se co so luong tp ke cua moi tp va tao do cua moi thanh pho
void KhoiTaoMaTran(MYGRAPH &g)//gan tat ca gia tri trong ma tran ke=0
{
   for(int i=0;i<g.n;i++)
   {
      for(int j=0;j<g.n;j++)
      {
         g.Matran[i][j]=0;
      }
   }
}
void DuyetMaTran(MYGRAPH &g)//dua vao ma tran ke
{
   for(int i=0;i<g.n;i++)
   {
      for(int j=0;j<g.n;j++)
      {
         for(int d=0;d<g.DSTP[i].soluongTPKe;d++)//duyet tat ca cac tp ke cua dinh i
         {
            if(g.DSTP[j].Ten==g.DSTP[i].ListTPKe[d])//so sanh thanh pho thu  j co trong danh sach thanh pho ke cua i ko, neu co cap nhat lai gia tri cho ma tran dua vao cong thuc tinh kc
            {
               g.Matran[i][j]=(floor(Euclide(g.DSTP[i],g.DSTP[j])*100+0.5)/100);//floor  lam tron
            }
         }
         
      }
   }
}

//Đến đây các bạn có thể sử dụng code UCS của bài trên cho ma tran ke
//Nghĩ thế nào code thế ấy:d, 2 đêm thức trắng Sad( mới xong UCS:((
Good luck :d:d,


---------Học là bể khổ => Quay đầu là bờ--------
--------------------Số phận của chúng ta là đây-------------------------
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS 1268443227nghien1


Được sửa bởi Trần Ngọc Anh ngày Sat 30 Oct 2010, 22:56; sửa lần 2.

※ Bài viết cùng chuyên mục


Tác giảThông điệp
acb093
Member

acb093
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 416
Coins Coins : 400
Thanked Thanked : 43
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

góp ý với Ngọc Anh chỗ này
Trích dẫn :
Code:
void KhoiTaoMaTran(MYGRAPH &g)//gan tat ca gia tri trong ma tran ke=0
{
  for(int i=0;i<g.n;i++)
  {
      for(int j=0;j<g.n;j++)
      {
        g.Matran[i][j]=0;
      }
  }
}
có 1 cách đơn giản hơn là:

Code:
#include<string.h>
...
memset(g.matran,0.0,max*max*sizeof(double));
...


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Trần Ngọc Anh
Member

Trần Ngọc Anh
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 279
Coins Coins : 691
Thanked Thanked : 64
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

[You must be registered and logged in to see this link.] đã viết:
góp ý với Ngọc Anh chỗ này
Trích dẫn :
Code:
void KhoiTaoMaTran(MYGRAPH &g)//gan tat ca gia tri trong ma tran ke=0
{
  for(int i=0;i<g.n;i++)
  {
      for(int j=0;j<g.n;j++)
      {
        g.Matran[i][j]=0;
      }
  }
}
có 1 cách đơn giản hơn là:

Code:
#include<string.h>
...
memset(g.matran,0.0,max*max*sizeof(double));
...

Thanks nhá, hôm bữa tìm cách như vậy mà không được :d Very Happy


---------Học là bể khổ => Quay đầu là bờ--------
--------------------Số phận của chúng ta là đây-------------------------
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS 1268443227nghien1

※ Bài viết cùng chuyên mục


Tác giảThông điệp
daokiem_votinh64
Member

daokiem_votinh64
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 556
Coins Coins : 2157
Thanked Thanked : 168
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

[You must be registered and logged in to see this link.] đã viết:

0 0 0 0 3 9 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 0 1 8 0 2 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 9 0
0 0 0 2 0 0 0 0 0 0 0 5
0 0 0 0 0 0 0 0 4 4 0 0 // chỗ này nên là 0 phải ko?
0 0 0 0 0 0 0 0 0 15 0 0
0 0 0 0 0 0 0 0 0 0 3 0
0 0 0 0 0 0 5 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0

hoặc
0 0 0 0 3 9 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 2 0 0 0 0 0 0 0 0 0 0
0 0 1 8 0 2 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 9 0
0 0 0 2 0 0 0 0 0 0 0 5
0 0 0 0 0 0 0 0 4 4 0 0
0 0 0 0 0 0 0 0 0 15 0 0 // chỗ này nên là 4 phải ko?
0 0 0 0 0 0 0 0 0 0 3 0
0 0 0 0 0 0 5 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0

mình copy nguyên văn file của lớp ck4 mà .tét hàng cũng ok .chạy tay cả chục lần ,k sai đâu

※ Bài viết cùng chuyên mục


Tác giảThông điệp
kitsudo
Member

kitsudo
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 235
Coins Coins : 581
Thanked Thanked : 59
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

Ọc ! nhìn ko thấy sao Neutral

gọi cái đồ thị đó là ma trận a
nếu như theo cái đồ thị đó thì
- a[7][8] = 4
- thế tại sao a[8][7] = 0 ???????


Ôi 1 Thời Để Nhớ....
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS D17a3615b53458dd72b310f<br>

※ Bài viết cùng chuyên mục


Tác giảThông điệp
acb093
Member

acb093
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 416
Coins Coins : 400
Thanked Thanked : 43
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

[You must be registered and logged in to see this link.] đã viết:
Ọc ! nhìn ko thấy sao Neutral

gọi cái đồ thị đó là ma trận a
nếu như theo cái đồ thị đó thì
- a[7][8] = 4
- thế tại sao a[8][7] = 0 ???????
đường 1 chiều lên đi xa về gần Very Happy .


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


Tác giảThông điệp
daokiem_votinh64
Member

daokiem_votinh64
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 556
Coins Coins : 2157
Thanked Thanked : 168
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

[You must be registered and logged in to see this link.] đã viết:
Ọc ! nhìn ko thấy sao Neutral

gọi cái đồ thị đó là ma trận a
nếu như theo cái đồ thị đó thì
- a[7][8] = 4
- thế tại sao a[8][7] = 0 ???????

Dạ bác ơi.Đồ thị này là đồ thị trọng số có huớng mà.chi phí khác nhau mà bình thường.Giống như đò thị của thầy trong slide lý thuyết phần ucs,giá tri của ma trận đâu có đối xứng nhau qua đường chéo chính đâu

p/s:cái này nhớ thầy có nói trên lớp òi mà

※ Bài viết cùng chuyên mục


Tác giảThông điệp
kitsudo
Member

kitsudo
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 235
Coins Coins : 581
Thanked Thanked : 59
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

Ọc ! có dzụ đó nữa hả. Hok có đi học cũng hok có coi slide nên hok biết Sad


Ôi 1 Thời Để Nhớ....
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS D17a3615b53458dd72b310f<br>

※ Bài viết cùng chuyên mục


Tác giảThông điệp
MR><601
Member

MR><601
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 126
Coins Coins : 236
Thanked Thanked : 24
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

Hix nhìn những code mà tưởng như đi dzô mặt trận. Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS 422298


Ghé thăm: [You must be registered and logged in to see this link.] Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS 459128

※ Bài viết cùng chuyên mục


http://vn.360plus.yahoo.com/khjnkhjn-blog/
Tác giảThông điệp
annj30490
Member

avatar
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 39
Coins Coins : 63
Thanked Thanked : 5
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

Sao mình chạy code của Ngọc Anh nó ra dậy ta ? debug thì thấy code đúng mà out console thì dậy nà : Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Capturexd

Ngọc Anh giải thích giúp mình được hong nhỉ?

※ Bài viết cùng chuyên mục


Tác giảThông điệp
daokiem_votinh64
Member

daokiem_votinh64
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 556
Coins Coins : 2157
Thanked Thanked : 168
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

bài của người ta phải dấu lại chút ít chứ k thì toi sao .cho nhiêu đó là quá nhièu òi.cho thêm nữa lại có người lười suy nghĩ là chết cả đám.

※ Bài viết cùng chuyên mục


Tác giảThông điệp
acb093
Member

acb093
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 416
Coins Coins : 400
Thanked Thanked : 43
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

Chắc là do file input.txt của bạn

<span style="background:#C00;">10_</span>
<span style="background:#C00;">M T_</span>
<span style="background:#C00;">A...</span>


Trích dẫn :
Code:
fscanf(f,"%d\n",&g.n );//lay so dinh
hàm fscanf chỉ đọc hết số gần nhất là số 10 nên vẫn còn ký tự xuống dòng.
tiếp theo
Trích dẫn :
Code:
  char s[MAX];mang luu dong se doc
  fgets(s,MAX,f);//Doc 1 dong khi gap \n thi dung lai,hoac khi du MAX ki tu thi dung lai
hàm này đọc cho tới khi gặp ký tự xuống dòng, do vậy chả có gì trong s ngoài ký tự xuống dòng chứ ko phải mà M T như ý đồ của NA.

Bạn kiểm tra xem có tồn tại dấu cách sau cung không nếu có thì xóa nó đi rồi thử chạy lại xem sao.


[You must be registered and logged in to see this link.]

※ Bài viết cùng chuyên mục


Tác giảThông điệp
huynchunhao
Member

huynchunhao
Member
Giới tính : Nam
Tuổi : 30
Posts Posts : 2
Coins Coins : 2
Thanked Thanked : 0
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

Ai có source A* ko .Share cho mình với

※ Bài viết cùng chuyên mục


Tác giảThông điệp
gavietnam
Member

gavietnam
Member
Giới tính : Nữ
Tuổi : 30
Posts Posts : 23
Coins Coins : 38
Thanked Thanked : 0
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

[You must be registered and logged in to see this link.] đã viết:
Ai có source A* ko .Share cho mình với
chia sẻ cho a e tham khao voi nao. share code luon di du972ng share chương trình

※ Bài viết cùng chuyên mục


Tác giảThông điệp
tro.ng_mk
Member

tro.ng_mk
Member
Giới tính : Nam
Tuổi : 29
Posts Posts : 224
Coins Coins : 384
Thanked Thanked : 45
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

giờ này chưa hết hạn A* thì ai mà dám share cho bác mà bác xin lộ liễu thế...nói nhỏ thôi không anh em chém chết.....

※ Bài viết cùng chuyên mục


http://bongdaso.com
Tác giảThông điệp
ngoctran31k10
Member

ngoctran31k10
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 3
Coins Coins : 5
Thanked Thanked : 1
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Sponsored content


Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS Empty

※ Bài viết cùng chuyên mục


 
Hàng Hót giúp các bác Thực Hành môn TTNT đây...code full BFS+LCBFS+UCS
Xem chủ đề cũ hơn Xem chủ đề mới hơn 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
Windows Việt :: Lưu Trữ :: Lưu Trữ - Các môn học cũ :: Trí Tuệ Nhân Tạo-
[Windows Việt] Deverloped by Nguyễn Gia Phú - https://windows.forumvi.com
Powered by © Forumotion.com - phpBB™ version ©phpBB2
Go to top Go to bottom