Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
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ông cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã đượ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ông cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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

  1. 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: 30
    Bài viết cuối: 28-05-2020, 10:23 PM
  2. 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
  3. 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
  4. 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
  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