【问题标题】:output one arrangement of n people everyone has k friends,输出 n 个人的一个排列,每个人都有 k 个朋友,
【发布时间】:2017-02-23 15:56:55
【问题描述】:

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

【问题讨论】:

标签: algorithm depth-first-search


【解决方案1】:

将所有人排成一圈。

  • 对于偶数 k,让每个人都与距离他们 k/2 个位置内的人成为朋友。
  • 对于奇数 k 和偶数 n,让每个人都与他们周围 (k-1)/2 个位置内的人和他们对面的人成为朋友。
  • 对于奇数 k 和奇数 n,没有解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2014-05-29
    • 2012-06-03
    • 2018-07-08
    相关资源
    最近更新 更多