【蓝桥杯】分考场(DFS+回溯)

问题描述
  n个人参加某项特殊考试。
  为了公平,要求任何两个认识的人不能分在同一个考场。
  求是少需要分几个考场才能满足条件。
输入格式
  第一行,一个整数n(1<n<100),表示参加考试的人数。
  第二行,一个整数m,表示接下来有m行数据
  以下m行每行的格式为:两个整数a,b,用空格分开 (1<=a,b<=n) 表示第a个人与第b个人认识。
输出格式
  一行一个整数,表示最少分几个考场。
样例输入
5
8
1 2
1 3
1 4
2 3
2 4
2 5
3 4
4 5
样例输出
4
样例输入
5
10
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5
样例输出
5

思想:数据量不大,利用回溯+DFS枚举所有可能情况,并通过当前要分的教室数应小于之前找某个分配方案的最小教室数这个条件,以及当前学生id应小于等于n这个条件,通过这两个条件进行剪纸,否则会TLE。

借助这么大佬的文章代码(思想一致,他的代码注释很详细):
https://blog.csdn.net/li1615882553/article/details/79694958

猜你喜欢

转载自blog.csdn.net/weixin_39909619/article/details/88645055