输出一个 n 人的排列,每个人都有 k 个朋友,

output one arrangement of n people everyone has k friends,

这是一道面试题,给n个人,输出一个排列,每个人都有k个朋友。 n>k。有可能没有答案,即如果 n 和 k 都是奇数,则没有答案。 天真地为每个人挑选 k 个朋友可能不是 return 的解决方案,即 n=6,k=4,你可能最终有 5 个人成为朋友,剩下的一个没有朋友。这个问题的快速算法是什么?还有类似的问题吗?

大家围成一圈。

  • 即使是 k,让每个人都与他们 k/2 点内的人成为朋友。
  • 对于奇数k和偶数n,让每个人都和他们(k-1)/2个点内的人和他们对面的人成为朋友。
  • 奇数k和奇数n无解