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

Đề tài: K quân hậu trắng, k quân hậu đen. Tìm k?

  1. #1
    Ngày gia nhập
    05 2009
    Bài viết
    1

    Question K quân hậu trắng, k quân hậu đen. Tìm k?

    Đề bài: Cho bàn cờ n*n (n do mình nhập vào). Trên bàn cờ có k quân hậu trắng và k quân hậu đen sao cho 2 con hậu khác màu KHÔNG ăn được nhau (không quan tâm 2 con cùng màu). Tìm k max?

    PHP Code:
    #include <iostream>

    using namespace std;

    struct Square
    {
        
    char Queen;
        
    int BlackEnemies;
        
    int WhiteEnemies;
    };

    void AllocBoard(Square ** & boardint n);

    void DelBoard(Square ** & boardint n);

    void ShowBoard(Square ** boardint n); 

    void AddEnemies(Square ** & boardint nchar chess_pieceint rowint column);

    void ReduceEnemies(Square ** & boardint nchar chess_pieceint rowint column);

    int ArrangeQueen(int Next,Square ** & boardint nint blackint white);

    int main()
    {
        
    Square ** board;
        
    int nmax;

        
    AllocBoard(boardn);

        
    max ArrangeQueen(0boardn00);

        
    cout << "kmax is " << max;
        
    cout << endl;

        
    DelBoard(boardn);

        return 
    0;
    }

    void AllocBoard(Square ** & boardint n)
    {
        
    cout << "Enter the size of the chess-board: ";
        
    cin >> n;

        
    // Allocate
        
    board = new Square * [n];
        for (
    int i 0n; ++i)
        {
            
    board[i] = new Square [n];
        }

        
    // Initialize
        
    for (int i 0n; ++i)
        {
            for (
    int j 0n; ++j)
            {
                
    board[i][j].Queen '*';
                
    board[i][j].WhiteEnemies 0
                
    board[i][j].BlackEnemies 0;
            }
        }
    }

    void DelBoard(Square ** & boardint n)
    {
        for (
    int i 0n; ++i)
        {
            
    delete [] board[i];
        }

        
    delete [] board;
    }

    void ShowBoard(Square ** boardint n)
    {
        for (
    int i 0n; ++i)
        {
            for (
    int j 0n; ++j)
            {
                
    cout << board[i][j].Queen << " ";
            }

            
    cout << endl;
        }
    }

    void AddEnemies(Square ** & boardint nchar chess_pieceint rowint column)
    {
        for (
    int i 0n; ++i)
        {
            for (
    int j 0n; ++j)
            {
                if (
    row == || column == || row column == || row column == j)
                {
                    if (
    'W' == chess_piece)
                    {
                        ++
    board[i][j].WhiteEnemies;
                    }
                    else
                    {
                        ++
    board[i][j].BlackEnemies;
                    }
                }
            }
        }
    }

    void ReduceEnemies(Square ** & boardint nchar chess_pieceint rowint column)
    {
        for (
    int i 0n; ++i)
        {
            for (
    int j 0n; ++j)
            {
                if (
    row == || column == || row column == || row column == j)
                {
                    if (
    'W' == chess_piece)
                    {
                        --
    board[i][j].WhiteEnemies;
                    }
                    else
                    {
                        --
    board[i][j].BlackEnemies;
                    }
                }
            }
        }
    }

    int ArrangeQueen(int Next,Square ** & boardint nint blackint white)
    {
        static 
    int max 0;

        if (
    black == white && max black)
        {
            
    max black;
        }

        else
        {
            for (
    int i 0n; ++i)
            {
                for (
    int j 0n; ++j)
                {
                    if (
    Next %== && == board[i][j].WhiteEnemies && '*' == board[i][j].Queen)
                    {
                        
    board[i][j].Queen 'B';
                        
    AddEnemies(boardn'B'ij);
                        
    ArrangeQueen(Next+1,boardnblack 1white);
                        
    ReduceEnemies(boardn'B'ij);
                        
    board[i][j].Queen '*';
                    }
                    else if (
    Next %== && == board[i][j].BlackEnemies && '*' == board[i][j].Queen)
                    {
                        
    board[i][j].Queen 'W';
                        
    AddEnemies(boardn'W'ij);
                        
    ArrangeQueen(Next+1,boardnblackwhite 1);
                        
    ReduceEnemies(boardn'W'ij);
                        
    board[i][j].Queen '*';
                    }
                }
            }
        }

        return 
            
    max;

    Không biết đúng không, xin các bạn cho ý kiến?
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi thxthn : 04-05-2009 lúc 04:39 PM. Lý do: Sửa code

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

  1. Trao đổi liên kết, trao doi logo, Text Link với các webforumblog (free)
    Gửi bởi nguyenlam14990 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 31
    Bài viết cuối: 13-03-2012, 11:53 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