本题适合来理解回溯的思想:
代码给出,不做过多解释:
#include <iostream>
using namespace std;
int main()
{
int positionCan[6][6];/*运动员对于某个位置能不能站,0代表能,1代表能*/
int position[6];/*运动员的最终站位*/
int judge[6];//判断某个位置是否已经有人,1代表有人,0代表无人
for (int i=0;i<6;i++)//运动员编号
{
for (int j = 0;j<6;j++)//位置编号
{
if (i == j)
{
positionCan[i][j] = 0;
}
else
{
positionCan[i][j] = 1;
}
}
}
for (int i=0;i<6;i++)
{
judge[i] = 0;//初始为0
}
for (int i=0;i<6;i++)
{
position[i] = -1;//刚开始,所有运动员都没有位置站
}
positionCan[0][4] = 0;//1号队员不在后排
positionCan[0][5] = 0;/