`
jupiterpan
  • 浏览: 20660 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

百度变态规则问题 解法

阅读更多
引用
变态比赛规则

为了促进各部门员工的交流,百度举办了一场全公司范围内的“拳皇”(百度内部最流行的格斗游戏)友谊赛,负责组织这场比赛的是百度的超级“拳皇”迷W.Z。W.Z不想用传统的淘汰赛或者循环赛的方式,而是自己制定了一个比赛规则。

由于一些员工(比如同部门或者相邻部门员工)平时接触的机会比较多,为了促进不同部门之间的交流,W.Z希望员工自由分组。不同组之间的每两个人都会进行一场友谊赛而同一组内的人之间不会打任何比赛。

比如4个人,编号为1~4,如果分为两个组并且1,2一个组,3,4一个组,那么一共需要打四场比赛:1 vs 3,1 vs 4,2 vs 3,2 vs 4。 而如

果是1,2,3一组,4单独一组,那么一共需要打三场比赛 1 vs 4,2 vs 4,3 vs 4。


很快W.Z意识到,这样的比赛规则可能会让比赛的场数非常多。W.Z想知道如果有N个人,通过上面这种比赛规则,总比赛场数有可能为K场吗?

比如3个人,如果只分到一组则不需要比赛,如果分到两组则需要2场比赛,如果分为三组则需要3场比赛。但是无论怎么分都不可能恰需要1场比赛。


相信作为编程高手的你一定知道该怎么回答这个问题了吧? 那么现在请你帮助W.Z吧。


思路:原帖讨论很多,但个人觉得不是基于JAVA的思考方式,这里无非就是N所有可能的拆法产生的比赛数目能和K吻合而已。恰好拆数字之前写过,只要在最里层加个判断把K值放进去比较一下就可以了。代码不细改了,以下做参考。
package algorithm;

import java.util.Stack;

public class NumberDivide {

  /**
   * @param args
   */
  private Stack<Integer> stack = new Stack<Integer>();
  private int divide(int m,int n){
    if(n==0) return 1;
    int m1=n;
    while(m1>0){
      if(m1<=m){
        stack.push(m1);
        if(divide(m1,n-m1)>0){
          System.out.println(stack);
          int pi=stack.size()*(stack.size()-1)/2;
          for(int i:stack){
            pi*=i;
          }
          System.out.println(pi);
        }
        stack.pop();
      }
      m1--;
    }   
    return 0;
  }
  public void divide(int n){
    divide(n-1,n);
  }
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    new NumberDivide().divide(6);
  }

}

分享到:
评论

相关推荐

    问题解法 微积分学辞典2.pdf

    问题解法 微积分学辞典

    主元素问题解法4.rar 主元素问题解法4.rar

    主元素问题解法4.rar 主元素问题解法4.rar 主元素问题解法4.rar 主元素问题解法4.rar 主元素问题解法4.rar 主元素问题解法4.rar 主元素问题解法4.rar 主元素问题解法4.rar 主元素问题解法4.rar 主元素问题解法4.rar ...

    反问题的数值解法

    反问题的数值解法.pdf图书。肖庭延、于慎根、王彦飞著,科学出版社,274页。

    主元素问题解法1.rar 主元素问题解法1.rar

    主元素问题解法1.rar 主元素问题解法1.rar 主元素问题解法1.rar 主元素问题解法1.rar 主元素问题解法1.rar 主元素问题解法1.rar 主元素问题解法1.rar 主元素问题解法1.rar 主元素问题解法1.rar 主元素问题解法1.rar ...

    主元素问题解法5.rar 主元素问题解法5.rar

    主元素问题解法5.rar 主元素问题解法5.rar 主元素问题解法5.rar 主元素问题解法5.rar 主元素问题解法5.rar 主元素问题解法5.rar 主元素问题解法5.rar 主元素问题解法5.rar 主元素问题解法5.rar 主元素问题解法5.rar ...

    主元素问题解法3.rar 主元素问题解法3.rar

    主元素问题解法3.rar 主元素问题解法3.rar 主元素问题解法3.rar 主元素问题解法3.rar 主元素问题解法3.rar 主元素问题解法3.rar 主元素问题解法3.rar 主元素问题解法3.rar 主元素问题解法3.rar 主元素问题解法3.rar ...

    不适定问题的解法(吉洪诺夫).pdf

    《不适定问题的解法》一书由吉洪诺夫以及另一位数学家阿尔先宁共同撰写,系统地介绍了不适定问题的理论,并将之应用于从热流到光学系统设计、观测数据的自动处理等广泛领域。这本书为关心应用数学、但不熟悉相关专业...

    八皇后问题解法(c和c++)

    八皇后问题的两种解法,包含c方式和c++方式

    主元素问题解法2.rar

    主元素问题解法2.rar 主元素问题解法2.rar 主元素问题解法2.rar 主元素问题解法2.rar 主元素问题解法2.rar 主元素问题解法2.rar 主元素问题解法2.rar 主元素问题解法2.rar 主元素问题解法2.rar 主元素问题解法2.rar ...

    博弈问题的解法.rar

    在这个"博弈问题的解法"压缩包中,我们可以看到三个文件:2-zyf.doc、S_nim.txt以及cutting game.txt,它们分别可能对应不同的博弈问题及其解决方案。 首先,"2-zyf.doc"可能是关于“二人博弈”或“Zyf博弈”的文档...

    二维稳态导热问题数值解法.pdf

    二维稳态导热问题数值解法.pdf

    背包问题九讲及各种解法

    背包问题通常分为0-1背包、完全背包、多重背包等不同类型,每种类型有其特定的解法和优化策略。 0-1背包问题是最基础的形式,每个物品只能选择一次,要么不选,要么全选。其核心算法是动态规划,通过构建一个二维...

    迷宫问题的解法

    迷宫问题的解法 运用递归原理 很有趣的问题

    常微分方程初值问题数值解法.ppt

    常微分方程初值问题数值解法.ppt

    常微分方程边值问题的数值解法.pdf

    常微分方程边值问题的数值解法是计算科学中的一个重要领域,主要研究如何通过数值方法求解那些包含边界条件的微分方程。边值问题与初值问题不同,初值问题只需要指定微分方程在某一点的初始条件,而边值问题则需在...

    热传导问题的数值解法.zip

    这个名为"热传导问题的数值解法.zip"的压缩包,很可能是提供了一份详细的教程或说明书,旨在帮助读者理解并掌握如何运用数值方法解决这类问题。 首先,我们需要了解热传导的基本理论。热传导是热量从高温区域向低温...

    n皇后问题解法

    解决n皇后的代码 #include #include #include #define _PRINT_ 0//没有输出具体的解,只是计算了总数。 #define MAXQ 100 long N, t;...long qx[MAXQ], qy[MAXQ];...bool chk(int x, int y) //检测(x,y)处的皇后是否...

    传热课件第四版第四章 导热问题的数值解法1

    在传热学中,数值解法是解决复杂导热问题的关键技术,特别是在处理非稳态导热问题时。非稳态导热与稳态导热的主要差异在于控制方程中包含了一个时间相关的非稳态项。本部分主要讨论非稳态导热问题的数值解,特别是...

    不同数值解法课件

    本文档是一份关于不同数值解法在热力学领域中的应用的课件,课件详细介绍了用于求解导热问题的几种基本方法,包括实验法、理论分析法和数值计算法,并对这些方法的特点进行了深入分析。同时,还对数值解法中的有限差...

    八皇后问题解法.zip

    八皇后问题解法.zip

Global site tag (gtag.js) - Google Analytics