Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Jul 2015
    Bài viết
    0

    [Help]Cho mình hỏi dịch đoạn code này sang ngôn ngữ java như thế nào?

    <div>
    <div><noscript>spoiler (move your mouse to the spoiler area to reveal the content)</noscript>

    show spoiler
    hide spoiler

    </div>
    <div>
    <div><blockquote>


    Mã:
    #include <iostream>
    #include <queue>
    #include <string>
    using namespace std;
    #define mark 1
    int * lookforfirstedges(int e[][4], int length, int computernum, int timeinfected);
    string breadthfirstsearch(int e[][4],int elength, int v[][2],int vlength, int *root);
     
    int main()
    {
        int v[5][2] = {{1,0},{2,0},{3,0},{4,0},{5,0}}; // tập đỉnh
        int e[6][4] = {{3, 4, 4, 0}, {1, 2, 4, 0}, {2, 4, 8, 0}, {3, 4, 8, 0}, {1, 4, 12, 0}, {4, 5, 12, 0}}; //tập cạnh
        int computername = 1; // máy tính bị nhiễm
        int timeinfected = 8;// thời điểm bị nhiễm
        int elength = 6; // số hàng của e
        int vlength = 5;// số hàng của v
        int *root = lookforfirstedges(e , elength, computername, timeinfected);
        if(root == 0)
        {
            cout << "there are no infected computer" <<endl;
            system("pause");
            return 0;
        }
        string r = breadthfirstsearch(e, elength, v, vlength,root);
        cout << r << endl;
        system("pause");
        return 0;
    }
    int * lookforfirstedges(int e[][4], int length, int computernum, int timeinfected)
    {
        //tìm kiếm cạnh đầu tiên của quá trình phát tán virus
        for(int i = 0; i < length; i++)
        {
            if ((e[i][0] == computernum || e[i][1] == computernum) && e[i][2] >= timeinfected)
                return e[i];
        }
        return 0;
    }
     
    string breadthfirstsearch(int e[][4],int elength, int v[][2],int vlength, int *root)
    {
        //duyệt theo chiều rộng
        queue<int*> q; // sử dụng hàng đợi
        q.push(root);
        root[3] = mark; // mark v
        v[root[0] - 1][1] = mark;
        v[root[1] - 1][1] = mark;
        while (!q.empty())
        {
            int* t = q.front();//lay phan tu dau tien
            q.pop();//dequeue
            if (elength == 1)
                return "infected computer : 
    1";
            //duyệt tất cả các cạnh
            for (int i = 0; i < elength; i++)
            {
                if (e[i][3] != mark)
                {
                    if ((t[0] == e[i][0] || t[0] == e[i][1] || t[1] == e[i][0] || t[1] == e[i][1]) && e[i][2] >= t[2])
                    {
                        e[i][3] = mark;
                        v[e[i][0] - 1][1] = mark;
                        v[e[i][1] - 1][1] = mark;
                        q.push(e[i]);
                    }
                }
            }
        }
        //in ket qua
        string result = "infected computer:
    ";
        char * rs = new char[20];
        for (int i = 0; i < vlength; i++)
        {
            if(v[i][1] == mark)
            {
                sprintf(rs,"%d 
    ",v[i][0]);
                result.append(rs);
            }
        }
        delete[] rs;
        return result;
    }
    </blockquote></div>
    </div>
    </div>

  2. #2
    Ngày tham gia
    Apr 2016
    Bài viết
    0
    ồ đây là c++ mà :d

  3. #3
    Ngày tham gia
    Jul 2015
    Bài viết
    3
    Trích dẫn Gửi bởi phongdt
    ồ đây là c++ mà :d
    :d uh. mình mới học nên ko hiểu cái đoạn hàm breadthfirstsearch() bó dùng hàng đợi thì sang java không biết dư nào

  4. #4
    Ngày tham gia
    Jul 2015
    Bài viết
    0
    kích vào đó nó sẽ thiết lập lại size của panel bạn nhé. và có thêm 1 cờ booblean làm cờ kiểm tra trạng thái là đóng hay mở. sau đó dùng esle if để thiết lập lại size cho phù hợp thôii

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •