64,636
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
//分块处理
//先写输出函数
void output(int a[][8]);
//输出函数后面应该是确定皇后位置函数
void check_board(int board[][8]);
void turn(int b[][8]);
void put(int b[][8]);
void main()
{
int board[8][8];
check_board(board);
put(board);
output(board);
}
void output(int a[][8])
{
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
if(a[i][j]==1)
cout<<"Q";
else
cout<<"+";
}
cout<<endl;
}
}
void check_board(int board[][8])
{
for(int i=0;i<8;i++)
for(int j=0;i<8;j++)
board[i][j]=0;
}
void turn(int b[][8])//turn函数将某指定元素(1)在棋盘上的同行同列以及左右斜对角线上的元素全部由0转化为2
{
for(int i=0;i<8;i++)
{
for(int j=0;i<8;j++)
{
if(b[i][j]==1)
{
for(int k=0;k<8&&k!=i;k++)//同列的元素全部化为2
{
b[k][j]=2;
}
for(int k=0;k<8&&k!=j;k++)//同行的元素全部化为2
{
b[i][k]=2;
}
//对角线转化
for(int k=0;k<8;k++)
{
if(k>=0&&k<8&&(i+j-k)>=0&&(i+j-k)<8)
b[k][i+j-k]=2;
}
for(int k=0;k<8;k++)
{
if(k>=0&&k<8&&(k+j-i)>=0&&(k+j-i)<8)
b[k][k+j-i]=2;
}
}
}
}
}
void put(int b[][8])
{
//main函数进行将每行的元素遍历再放置皇后
bool C=1;
for(int k=0;k<8;k++)
{
for(int q=0;q<8&&C;q++)
{
if(b[k][q]==0)
{
b[k][q]=1;
C=0;
turn(b);
}
}
}
}
[code=c]#include<iostream>
using namespace std;
//分块处理
//先写输出函数
void output(int a[][8]);
//输出函数后面应该是确定皇后位置函数
void check_board(int board[][8]);
void turn(int b[][8]);
void put(int b[][8]);
void main()
{
int board[8][8];
check_board(board);
put(board);
output(board);
}
void output(int a[][8])
{
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
if (a[i][j] == 1)
cout << "Q";
else
cout << "+";
}
cout << endl;
}
}
void check_board(int board[][8])
{
for (int i = 0; i < 8; i++)
for (int j = 0; j < 8; j++)
board[i][j] = 0;
}
void turn(int b[][8])//turn函数将某指定元素(1)在棋盘上的同行同列以及左右斜对角线上的元素全部由0转化为2
{
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
if (b[i][j] == 1)
{
for (int k = 0; k < 8 && k != i; k++)//同列的元素全部化为2
{
b[k][j] = 2;
}
for (int k = 0; k < 8 && k != j; k++)//同行的元素全部化为2
{
b[i][k] = 2;
}
//对角线转化
for (int k = 0; k < 8; k++)
{
if (k >= 0 && k < 8 && (i + j - k) >= 0 && (i + j - k) < 8)
b[k][i + j - k] = 2;
}
for (int k = 0; k < 8; k++)
{
if (k >= 0 && k < 8 && (k + j - i) >= 0 && (k + j - i) < 8)
b[k][k + j - i] = 2;
}
}
}
}
}
void put(int b[][8])
{
//main函数进行将每行的元素遍历再放置皇后
bool C = 1;
for (int k = 0; k < 8; k++)
{
for (int q = 0; q < 8 && C; q++)
{
if (b[k][q] == 0)
{
b[k][q] = 1;
C = 0;
turn(b);
}
}
}
}
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++) /*这儿的i < 8要改成j < 8*/
void put(int b[][8])
{
//main函数进行将每行的元素遍历再放置皇后
bool C=1;
for(int k=0;k<8;k++)
{
for(int q=0;q<8&&C;q++)
{
if(b[k][q]==0)
{
b[k][q]=1;
C=0; /*此处C改为0,那么循环只会执行一次,即k = 0, q = 0时。*/
turn(b);
}
}
}
}