随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define STUDENT_NUM 50
int student[STUDENT_NUM] = {0};
bool IsInSet(int pos, int number)
{
for (int i = 0; i < pos; i++)
{
if (student[i] == number)
{
return true;
}
}
return false;
}
void RandSeat(int pos)
{
if (pos == STUDENT_NUM)
{
return;
}
srand((unsigned int)time(NULL));
int studentNum = rand() % STUDENT_NUM + 1;
while (IsInSet(pos, studentNum) || (pos > 0 && (studentNum == student[pos - 1] + 1 || studentNum == student[pos - 1] - 1)))
{
studentNum = rand() % STUDENT_NUM + 1;
}
student[pos] = studentNum;
RandSeat(pos + 1);
}
int main()
{
RandSeat(0);
for(int i = 0; i < STUDENT_NUM; i++)
{
printf("%d\n", student[i]);
}
getchar();
return 0;
}