串珠子-Java
2016-04-25 09:40
585 查看
现在A和B在玩一个游戏,这个游戏首先给了他们很多珠子,珠子有两种颜色,一种蓝色,一种黄色,我们假定两种珠子都有无限多。A需要选择n颗珠子(n为奇数),然后由B串成一串项链(顺序由B确定,这里的项链也就是一个环)。假如在最后串成的项链中,A能够找到两个不同位置的蓝色珠子,并在这两处把这个项链断开成两段,其中一段恰好长度为(n+1)/2那么A就胜利了,注意这里为整数截断除法且这个长度是不包括选出的两颗珠子的。现在请你计算出A至少要选择多少颗蓝色珠子,才能保证无论B怎么串,他都能获胜。举个例子,当A选了7颗珠子,其中有3颗蓝珠子,那么如果B串的项链为"蓝蓝红红红红蓝",则A能获胜,若B串的项链为"蓝蓝红红蓝红红",则A不能获胜。
注:该题需要归纳总结:当n=3时至少需要1颗蓝珠子,当n=5时至少需要3颗蓝珠子,当n=7时至少需要4颗蓝珠子,当n=9时至少需要3颗蓝珠子
注:该题需要归纳总结:当n=3时至少需要1颗蓝珠子,当n=5时至少需要3颗蓝珠子,当n=7时至少需要4颗蓝珠子,当n=9时至少需要3颗蓝珠子
import java.util.*; public class Chain { public int findK(int n) { // write code here if (n % 3 == 0) n = (n - 1) >> 1; else n = (n + 1) >> 1; return n; } }
相关文章推荐
- java简单排序之选择排序
- mybatis3.2.3+spring整合
- Java对象表示方法2:XStream实现对象的XML话
- 【转】java源码分析ArrayList
- 使用Spring MVC统一异常处理实战
- java简单排序学习之插入排序
- Java对象表示方法1:序列化、反序列化和transient关键字的作用
- XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法
- java简单排序之冒泡排序
- struts2:通配符的使用
- java基础算法学习之概率算法
- java集合框架10——TreeMap和源码分析(一)
- 为什么在Spring的配置里,最好不要配置xsd文件的版本号
- Java遍历集合方法分析(实现原理、算法性能、适用场合)
- Java学习-15天
- Java学习-14天
- 从追MM谈Java的23种设计模式(转
- 深入分析 Java 中的中文编码问题
- Java开发中的23种设计模式详解(转)
- 【毕业生推荐系统】(3) 实现效果-完成80%