Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Lý thuyết đồ thị | Giải thuật DFS (Depth First Search)

  1. #1
    Ngày gia nhập
    09 2006
    Bài viết
    62

    Lightbulb Lý thuyết đồ thị | Giải thuật DFS (Depth First Search)

    PHP Code:
    #include <dos.h>
    #include <graphics.h>
    #include <alloc.h>
    #include "mouse.inc"

    #pragma warn -sus

    /* Toi da 100 nut */
    #define MAX 100

    int gr_drive=DETECTgr_mode;
    unsigned char lbuttonrbutton;
    int xmouseymouse;

    int sonut 0;
    typedef struct tagnode {
      
    int xy/* Vi tri tren man hinh */
    NODE;

    NODE nut[MAX];
    int  weight[MAX][MAX];
    int  themduoc 1;

    void DFS();

    void initialize()
    {
      
    char s1[] = "Nhap nut phai chuot de them nut";
      
    char s2[] = "Nhap nut trai chuot va re de them duong noi";
      
    char s3[] = "Nhan phim Q de thoat - S de bat dau minh hoa giai thuat";
      
    int ij;

      
    initgraph(&gr_drive, &gr_mode"");
      
    reset_mouse();
      
    setcolor(YELLOW);
      
    rectangle(00getmaxx(), getmaxy());
      
    outtextxy((getmaxx()-textwidth(s1))/25s1);
      
    outtextxy((getmaxx()-textwidth(s2))/215s2);
      
    outtextxy((getmaxx()-textwidth(s3))/225s3);
      
    line(035getmaxx(), 35);
      
    set_mouse_hlimits(5getmaxx()-6);
      
    set_mouse_vlimits(40getmaxy()-6);
      for (
    i=0i<MAXi++)
        for (
    j=0j<MAXj++)
          
    weight[i][j] = -1;
      
    show_mouse();
    }

    int index(int xint yint heso)
    {
      
    int iOK 0;
      for (
    i=0i<sonuti++)
        if (
    abs(nut[i].x) < 4*heso && abs(nut[i].y) < 4*heso)
        {
          
    OK 1;
          break;
        }
      if (
    OK)
        return 
    i;
      else
        return -
    1;
    }

    void get_mouse()
    {
      do {
        
    get_mouse_button(&lbutton, &rbutton, &xmouse, &ymouse);
      } while (
    lbutton == && rbutton == && !kbhit());
    }

    void clear_mouse()
    {
      do {
        
    get_mouse_button(&lbutton, &rbutton, &xmouse, &ymouse);
      } while (
    lbutton == || rbutton == 1);
    }

    int input_weight(int startint end)
    {
      
    int sizei;
      
    void far *buf;
      
    char cs[]="Nhap trong so"s1[3]="";
      
    size imagesize(getmaxx()/70getmaxy()/20,getmaxx()/70getmaxy()/10);
      
    buf malloc(size);
      
    getimage(getmaxx()/70getmaxy()/20,getmaxx()/70getmaxy()/10buf);
      
    setcolor(BLUE);
      
    setfillstyle(SOLID_FILLBLUE);
      
    bar(getmaxx()/70getmaxy()/20,getmaxx()/70getmaxy()/10);
      
    setcolor(WHITE);
      
    rectangle(getmaxx()/70getmaxy()/20,getmaxx()/70getmaxy()/10);
      
    line(getmaxx()/70getmaxy()/5,getmaxx()/70getmaxy()/5);
      
    outtextxy((getmaxx()-textwidth(s))/4getmaxy()/16s);
      
    0;
      do {
        do {
          
    getch();
        } while ((
    '0' || '9') && != 13 && != 27 && != 8);
        if (
    c>='0' && <= '9' && i<2)
        {
          
    s1[i] = c;
          
    s1[i+1] = 0;
          
    i++;
        }
        if (
    == && i>0)
        {
          
    i--;
          
    s1[i] = 0;
        }
        
    setcolor(BLUE);
        
    setfillstyle(SOLID_FILLBLUE);
        
    bar(getmaxx()/69getmaxy()/3,getmaxx()/69getmaxy()/9);
        
    setcolor(YELLOW);
        
    outtextxy((getmaxx()-textwidth(s))/4getmaxy()/1s1);
      } while(
    != 13 && != 27);
      
    putimage(getmaxx()/70getmaxy()/20bufCOPY_PUT);
      
    free(buf);
      if (
    == 13)
      {
        
    atoi(s1);
        
    weight[start][end] = i;
        
    weight[end][start] = i;
        return 
    i;
      }
      else
        return -
    1;
    }

    void get_weight()
    {
      
    int xyoldxoldyiOK 0startend;
      
    char s[5];
      
    setwritemode(XOR_PUT);
      
    setcolor(GREEN);
      for (
    i=0i<sonuti++)
        if (
    abs(nut[i].xmouse) < && abs(nut[i].ymouse) < 4)
        {
          
    start i;
          
    oldx nut[i].x;
          
    oldy nut[i].y;
          
    OK 1;
          break;
        }
      if (!
    OK)
        return;
      
    hide_mouse();
      
    line(xyoldxoldy);
      
    clear_mouse();
      
    show_mouse();
      do {
        
    get_mouse_button(&lbutton, &rbutton, &xmouse, &ymouse);
        if (
    oldx != xmouse || oldy != ymouse)
        {
          
    hide_mouse();
          
    line(xyoldxoldy);
          
    oldx xmouse;
          
    oldy ymouse;
          
    line(xyoldxoldy);
          
    show_mouse();
        }
      } while (
    lbutton == 0);
      
    OK 0;
      
    hide_mouse();
      
    line(xyoldxoldy);
      for (
    i=0i<sonuti++)
        if (
    abs(nut[i].xmouse) < && abs(nut[i].ymouse) < 4)
        {
          
    end i;
          
    OK 1;
          break;
        }
      if (
    OK && end != start)
      {
        if ((
    input_weight(startend)) != -1)
        {
          
    setcolor(GREEN);
          
    line(xynut[end].xnut[end].y);
          
    itoa(is10);
          
    setcolor(RED);
          
    outtextxy(+ (nut[end].x) / 4+ (nut[end].y) / 4s);
        }
      }
      
    setwritemode(COPY_PUT);
      
    show_mouse();
    }

    void main()
    {
      
    int done 0;
      
    char cs[4];

      
    initialize();
      do {
        
    get_mouse();
        if (
    kbhit())
        {
          
    toupper(getch());
          switch(
    c)
          {
            case 
    'Q' done 1; break;
            case 
    'S' DFS(); break;
          }
        }
        if (
    rbutton == && index(xmouseymouse10) == -1)
        {
          
    hide_mouse();
          if (
    themduoc)
          {
            
    setcolor(WHITE);
            
    circle(xmouseymouse4);
            
    itoa(sonuts10);
            
    setcolor(CYAN);
            
    outtextxy(xmouse+6ymouse-6s);
            
    nut[sonut].xmouse;
            
    nut[sonut].ymouse;
            
    sonut++;
            if (
    sonut>=MAX)
              
    themduoc 0;
          }
          
    clear_mouse();
          
    show_mouse();
        }
        if (
    lbutton == 1)
        {
          
    get_weight();
          
    clear_mouse();
        }
      } while (!
    done);
      
    closegraph();
    }

    void out(char *s)
    {
      
    setcolor(BLUE);
      
    setfillstyle(SOLID_FILLBLUE);
      
    bar(136getmaxx()-146);
      
    setcolor(YELLOW);
      
    outtextxy(438s);
    }

    int topstack[MAX];
    int visited[MAX];

    void push(int value)
    {
      
    stack[++top] = value;
      
    visited[value] = 1;
    }

    void pop(int *value)
    {
      *
    value stack[top--];
    }

    int get()
    {
      if (!
    isempty())
        return 
    stack[top];
      else
        return -
    1;
    }

    int isempty(void)
    {
      return (
    top == -1);
    }

    int xpos 1;

    void visit(int nutxet)
    {
      
    int iOK;
      
    char s[3];

      
    push(nutxet);
      
    setcolor(YELLOW); itoa(nutxets10); outtextxy(xpos++*2038s);
      
    circle(nut[nutxet].xnut[nutxet].y4); delay(1000);
      
    visited[nutxet] = 1;
      for (
    i=0i<sonuti++)
        if (
    weight[nutxet][i] != -&& visited[i] == 0)
          
    visit(i);
      
    pop(&nutxet);
    }

    void DFS()
    {
      
    int start=-1sizenutxetiOK;
      
    void far *buf;
      
    char *= {"Dung nut trai de chon nut dau."};

      
    size imagesize(136getmaxx()-146);
      
    buf malloc(size);
      
    getimage(136getmaxx()-146buf);
      
    out(s);
      do {
        
    get_mouse();
        
    start index(xmouseymouse1);
      } while (
    rbutton == && start == -1);
      if (
    lbutton == 1)
      {
        
    clear_mouse();
        
    hide_mouse();
        
    setcolor(RED);
        
    circle(nut[start].xnut[start].y4);
        
    setcolor(BLUE);
        
    setfillstyle(SOLID_FILLBLUE);
        
    bar(136getmaxx()-146);
    /* Bat dau giai thuat */
        
    top = -1;
        for (
    i=0i<sonuti++)
          
    visited[i] = 0;
        
    visit(start);
    /* Ket thuc giai thuat */
        
    show_mouse();
        
    getch();
      }
      
    putimage(136bufCOPY_PUT);
      
    free(buf);
      
    clear_mouse();
      
    hide_mouse();
      
    setcolor(WHITE);
      if (
    start != -1)
        
    circle(nut[start].xnut[start].y4);
      
    show_mouse();

    st
    Đã được chỉnh sửa lần cuối bởi hailoc12 : 19-06-2007 lúc 10:24 AM. Lý do: Đưa code vào tag php
    Click here for more Info of Cviet-Translator-Group

    ! be thankful for small blessings...

  2. #2
    Ngày gia nhập
    12 2010
    Bài viết
    2

    mh chạy nó báo lỗi thư viện graphics.h là sao nhỉ ?

Các đề tài tương tự

  1. Các giải thuật tìm kiếm - Lý thuyết và cài đặt trên C
    Gửi bởi PoPoPoPo trong diễn đàn Thủ thuật, Tutorials CTDL & Giải thuật
    Trả lời: 5
    Bài viết cuối: 24-02-2015, 05:21 PM
  2. Lý thuyết C++ | Giải thuật đồ thị cài đặt bằng C++
    Gửi bởi rox_rook trong diễn đàn Thủ thuật, Tutorials CTDL & Giải thuật
    Trả lời: 31
    Bài viết cuối: 30-01-2015, 10:41 PM
  3. Lập trình C Cần minh họa cho thuật toán tìm kiếm theo chiều sâu (depth first search)
    Gửi bởi nguoimoihoc trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 12-10-2013, 09:41 AM
  4. Các giải thuật sắp xếp - Lý thuyết và cài đặt trên C
    Gửi bởi PoPoPoPo trong diễn đàn Thủ thuật, Tutorials CTDL & Giải thuật
    Trả lời: 28
    Bài viết cuối: 15-05-2013, 11:10 AM
  5. cách tính độ phức tạp thuật toán khác của giải thuật binary search
    Gửi bởi himylove trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 06-06-2008, 06:35 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn