Chương trinh C giải thuật toán Floyd

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

default Chương trinh C giải thuật toán Floyd

Bài gửi by cradius on Tue Jan 25, 2011 1:51 pm

Cái này nhờ thằng Hậu nói mới nghĩ ra mà làm, còn chút thiếu sót, ai phát hiện được gì thì xin chỉ điểm thêm.

Sau đây là code:

Code:


#include
#include

//Kiem tra ma tran co day hay chua
int fullfil(int arr[255][255],int size)
{
    int i,j;

    for(i=0;i
  {
        for(j=0;j
      {
          if(arr[i][j]==0)
        {
              return 0;
        }
      }
  }

  return 1;
}


//Dien day ma tran
void fill(int arr[255][255], int size)
{
    int i,j,k;

    for(i=0;i
      {
          for(j=0;j
      {
            for(k=0;k
            {
                if(arr[i][j]==0)
              {
                  if(!(arr[i][k]==0||arr[k][j]==0))
              {
                      if(arr[i][j]
                    {
                          arr[i][j]=arr[i][k]+arr[k][j];
                    }
                  }
            }
            }
        }
      }

  if(fullfil(arr,size)==0)
  {
        fill(arr,size);
  }
}

void main()
{
    int f=1;

    while(f!=0)
        {
        int i,j,k,v;
        int arr[255][255];
   
        printf("Kich thuoc ma tran : ");
        scanf("%d", &v);
   
        printf("\nMa tran mau : \n\n");
        for(i=0;i
        {
            for(j=0;j
            {
                printf("v[%d][%d]\t\t", i+1, j+1);
            }
              printf("\n\n");
        }
   
        printf("\nNhap du lieu : \n\n");
   
   
   
        for(i=0;i
        {
              for(j=0;j
            {
                printf("v[%d][%d] = ",i+1,j+1);
            scanf("%d",&arr[i][j]);
            }
        }
   
   
    //kiem tra ma tran co day chua
   
        if(fullfil(arr,v)==0)
        {
    //dien day ma tran
            fill(arr,v);
        }
   
    //ma tran da dien day
      printf("\nMa Tran Da Dien Day : \n\n");
   
          for(i=0;i
      {
            for(j=0;j
          {
                printf("%d\t\t",arr[i][j]);
          }
          printf("\n\n");
      }
   
   
    ///////////////////////////////////////////////////////////////
      printf("\n\n");
    ///////////////////////////////////////////////////////////////
   
   
    //xu ly ma tran
        for(i=0;i
      {
            for(j=0;j
          {
              for(k=0;k
            {
                  if(arr[i][j]>arr[i][k]+arr[k][j])
                {
                      arr[i][j]=arr[i][k]+arr[k][j];
                }
            }
          }
      }
   
    //bieu dien ma tran da xu ly
        printf("KET QUA : \n\n");
   
        printf("\n------------------------------------------------------------------------\n");
       
        for(i=0;i
          {
              for(j=0;j
            {
                printf("%d\t\t",arr[i][j]);
            }
            printf("\n\n");
        }


        printf("\n\nBan co muon lam tiep khong : 1 -(CO) | 0-(KHONG)");
        scanf("%d",&f);
        printf("\n\n\n");
    }
    getch();
}


Một chút lưu ý :

+ Khi sử dụng, dùng số 0 thay cho các chỗ trống trong ma trận trọng số.
+ Nhớ chỉnh lại màn hình dos có chiều rộng lớn hơn 120, nếu không có thể sẽ hiển thị sai khi ma trận có kích thước 5x5 trở lên.
+ Công việc gian khổ cuối cung : Copy+Paste vào bất cứ chương trình C nào.
+ Sau đây là thành phẩm : [You must be registered and logged in to see this link.]

Đôi lời sau chót : Hahahaha, thiệt khâm phục ta quá đi.




cradius

Posts : 5
Thanked : -1
Gia Nhập 18/01/2011

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết