Share 8 queen problem code in c++,

ducthang589

New member
#8-Quite-Prod, #C ++, #Code, #Giải quyết vấn đề
## 8 Mã vấn đề nữ hoàng trong C ++

Vấn đề 8 nữ hoàng là một vấn đề kinh điển trong khoa học máy tính.Mục tiêu là đặt 8 nữ hoàng lên bàn cờ để không có nữ hoàng nào có thể tấn công một nữ hoàng khác.Nói cách khác, không có hai nữ hoàng nào có thể ở cùng một hàng, cột hoặc đường chéo.

Vấn đề 8 nữ hoàng là một vấn đề khó giải quyết, và không có thuật toán thời gian đa thức nào được biết đến để giải quyết nó.Tuy nhiên, có một số thuật toán khác nhau có thể được sử dụng để tìm giải pháp và một số thuật toán này khá hiệu quả.

Trong bài viết này, chúng tôi sẽ thảo luận về một thuật toán đơn giản để giải quyết vấn đề 8 nữ hoàng trong C ++.Thuật toán dựa trên ý tưởng sau:

1. Bắt đầu bằng cách đặt nữ hoàng đầu tiên trên bất kỳ hình vuông nào của bàn cờ.
2. Đối với mỗi nữ hoàng còn lại, hãy cố gắng đặt nó trên một hình vuông không tấn công bất kỳ nữ hoàng nào được đặt trước đó.
3. Nếu một nữ hoàng có thể được đặt trên một hình vuông mà không tấn công bất kỳ nữ hoàng nào được đặt trước đó, thì hãy làm như vậy.Nếu không, quay lại và thử đặt nữ hoàng trên một hình vuông khác.

Thuật toán này cuối cùng sẽ tìm ra giải pháp cho vấn đề 8 nữ hoàng, mặc dù có thể mất nhiều thời gian để làm điều đó.Trên thực tế, độ phức tạp thời gian trong trường hợp xấu nhất của thuật toán này là theo cấp số nhân.

Tuy nhiên, trong thực tế, thuật toán thường tìm thấy một giải pháp cho vấn đề 8 nữ hoàng trong một khoảng thời gian hợp lý.Mã sau đây cho thấy cách thực hiện 8 vấn đề nữ hoàng trong C ++:

`` `C ++
#include <Istream>

sử dụng không gian tên STD;

// Xác định bàn cờ là mảng 2D.
bo mạch int [8] [8];

// Hàm này kiểm tra xem một nữ hoàng có thể được đặt trên một hình vuông nhất định.
bool issafe (int row, int col) {
// Kiểm tra xem có nữ hoàng trong cùng một hàng không.
for (int i = 0; i <col; i ++) {
if (board [hàng] == 1) {
trả lại sai;
}
}

// Kiểm tra xem có nữ hoàng trong cùng một cột không.
for (int i = 0; i <row; i ++) {
if (board [col] == 1) {
trả lại sai;
}
}

// Kiểm tra xem có nữ hoàng trong cùng một đường chéo không.
for (int i = row-1, j = col-1; i> = 0 && j> = 0; i--, j--) {
if (board [j] == 1) {
trả lại sai;
}
}

// Kiểm tra xem có nữ hoàng ở đường chéo đối diện không.
for (int i = row+1, j = col-1; i <8 && j> = 0; i ++, j--) {
if (board [j] == 1) {
trả lại sai;
}
}

// Nữ hoàng có thể được đặt trên quảng trường đã cho.
trả lại đúng;
}

// Hàm này in giải pháp cho vấn đề 8 nữ hoàng.
void printSolution () {
for (int i = 0; i <8; i ++) {
for (int j = 0; j <8; j ++) {
cout << board [j] << "";
}
cout << endl;
}
}

// Chức năng này giải quyết vấn đề 8 nữ hoàng.
void giải quyết () {
// Khởi tạo bàn cờ cho tất cả các số không.
for (int i = 0; i <8; i ++) {
for (int j = 0; j <8; j ++) {
Bảng [j] = 0;
}
}

// Đặt nữ hoàng đầu tiên trên bất kỳ hình vuông nào.
Bảng [0] [0] = 1;

//
=======================================
#8-queen-problem, #C++, #Code, #Problem-solving
## 8 Queen Problem Code in C++

The 8 queen problem is a classic problem in computer science. The goal is to place 8 queens on a chessboard so that no queen can attack another queen. In other words, no two queens can be on the same row, column, or diagonal.

The 8 queen problem is a difficult problem to solve, and there is no known polynomial-time algorithm for solving it. However, there are a number of different algorithms that can be used to find a solution, and some of these algorithms are quite efficient.

In this article, we will discuss a simple algorithm for solving the 8 queen problem in C++. The algorithm is based on the following idea:

1. Start by placing the first queen on any square of the chessboard.
2. For each of the remaining queens, try to place it on a square that does not attack any of the previously placed queens.
3. If a queen can be placed on a square without attacking any of the previously placed queens, then do so. Otherwise, backtrack and try placing the queen on a different square.

This algorithm will eventually find a solution to the 8 queen problem, although it may take a long time to do so. In fact, the worst-case time complexity of this algorithm is exponential.

However, in practice, the algorithm usually finds a solution to the 8 queen problem in a reasonable amount of time. The following code shows how to implement the 8 queen problem in C++:

```c++
#include <iostream>

using namespace std;

// Define the chessboard as a 2D array.
int board[8][8];

// This function checks if a queen can be placed on a given square.
bool isSafe(int row, int col) {
// Check if there is a queen in the same row.
for (int i = 0; i < col; i++) {
if (board[row] == 1) {
return false;
}
}

// Check if there is a queen in the same column.
for (int i = 0; i < row; i++) {
if (board[col] == 1) {
return false;
}
}

// Check if there is a queen in the same diagonal.
for (int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {
if (board[j] == 1) {
return false;
}
}

// Check if there is a queen in the opposite diagonal.
for (int i = row + 1, j = col - 1; i < 8 && j >= 0; i++, j--) {
if (board[j] == 1) {
return false;
}
}

// The queen can be placed on the given square.
return true;
}

// This function prints the solution to the 8 queen problem.
void printSolution() {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
cout << board[j] << " ";
}
cout << endl;
}
}

// This function solves the 8 queen problem.
void solve() {
// Initialize the chessboard to all zeros.
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
board[j] = 0;
}
}

// Place the first queen on any square.
board[0][0] = 1;

//
 
Join Telegram ToolsKiemTrieuDoGroup
Back
Top