好玩的游戏

收集一些好玩的编程游戏

  • 收集一些好玩的编程游戏
      • Smarandache consecutive number
      • UyHiP 趣题几个特殊的强正则图来源
      • 趣题为什么偏偏是 6 格
      • IMO2016 趣题Geoff 的青蛙
      • 二叉树遍历
      • 数值的整数次方
      • 圆圈中剩下的最后数字
      • 仅用递归操作和栈操作逆序一个栈
      • 由两个栈组成的队列

2016 campus test
codewars
codinggame


Smarandache consecutive number

把数字1到n连接起来就构成了第n个Smarandache consecutive number。Smarandache的前17个数如下:

1
12
123
1234
12345
123456
1234567
12345678
123456789
12345678910
1234567891011
123456789101112
12345678910111213
1234567891011121314
123456789101112131415
12345678910111213141516
1234567891011121314151617

给定一个正整数n,问[1,n]之间含有多少个Smarandache consecutive number
([1,n]=[第一个Smarandache consecutive number,第n个Smarandache consecutive number])
输入

多行数据组成。每行一个整数n,n大于1并且小于第1000个Smarandache consecutive number

输出

对于每一行的数据n,输出一行,即[1,n]之间Smarandache consecutive number的个数。

来源



UyHiP 趣题:几个特殊的强正则图(来源)

下面这个趣题出自 Using your Head is Permitted 谜题站 2016 年 8 月的题目,稍有改动。

屋子里有若干个人,任意两个人都有恰好 1 个共同的朋友。这有可能吗?有可能。比方说,屋子里有 9 个人,其中 8 个人正好组成 4 对朋友,第 9 个人则和前面 8 个人都是朋友。容易验证,任意两个人都有恰好 1 个共同的朋友。我们可以用下面这个图表示此时这 9 个人之间的朋友关系,其中每个点代表一个人,如果两个人是朋友,就在他们之间连一条线。

好玩的游戏_第1张图片

除了上图展示的情况之外,我们还能构造出很多别的同样满足要求的情况。事实上,上述方案可以扩展到一切奇数个人的情况,比如下面这样:

好玩的游戏_第2张图片
Read More


趣题:为什么偏偏是 6 格?

无穷多个相同大小的正方形格子排成一排,向左右两边无限地延伸。每个格子里都有 0 个、 1 个或多个原子。每一次,你可以对它们做下面两种操作之一:

  • 选择某个格子,保证该格子内至少含有 1 个原子。将该格子内的其中 1 个原子分裂为 2 个,从而使得该格子内的原子数量减 1 ,两边的邻格里的原子数量分别加 1。
  • 选择某个格子,保证两边的邻格里均至少含有 1 个原子。从两边的邻格里各取 1 个原子聚合起来,从而使得两边的邻格里的原子数量分别减 1 ,该格子内的原子数量加 1。

初始时,某个格子里有 1 个原子。现在,你需要在若干次操作之后,让它右移 6 格。也就是说,你需要用若干次操作把下面的第一个图变成第二个图(其中,数字 1 表示该格内的原子数为 1 )。继续阅读下去之前,你不妨自己先试一试。你可以在纸上画好格子,用硬币、大米、巧克力豆等物体代替原子。

好玩的游戏_第3张图片
Read More


IMO2016 趣题:Geoff 的青蛙

2016 年 IMO 的第 6 题(也就是第二天比赛的第 3 题)非常有趣,这恐怕算得上是近十年来 IMO 的所有题目中最有趣的题目之一。平面上有 n ≥ 2 条线段,每两条线段都有一个交点,并且任意三条线段都不交于同一点。 Geoff 打算在每条线段的其中一个端点处放置一只青蛙,并让每只青蛙都朝向它所在线段的另一个端点。然后, Geoff 将会拍 n – 1 次手。每次拍手时,每只青蛙都立即向前跳到它所在线段的下一个交点处(青蛙们在跳跃过程中始终不会改变方向)。 Geoff 希望巧妙地安排初始时放置青蛙的方法,使得在整个过程中,任意两只青蛙都不会同时到达某个相同的交点。这个题目有两个小问。
1. 证明:当 n 为奇数时, Geoff 一定有办法实现他的要求。
2. 证明:当 n 为偶数时, Geoff 永远无法实现他的要求。

Read More


二叉树遍历

输入二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设前序遍历和中序遍历结果中都不包含重复的数字,例如输入的前序遍历序列 {1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}重建出如图所示的二叉 树。
好玩的游戏_第4张图片
[Solution]1

Read More


数值的整数次方

实现函数double Power(double base,int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题。

Read More


圆圈中剩下的最后数字

0,1,…,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求这个圆圈里剩下的最后一个数字。

Read More


仅用递归操作和栈操作逆序一个栈

一个栈一次压入了1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1.将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。

Read More


由两个栈组成的队列

编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。

Read More


  1. 前序遍历第一个结点是父结点,中序遍历如果遍历到父结点,那么父结点前面的结点是左子树的结点,后边的结点的右子树的结点,这样我们可以找到左、右子树的前序遍历和中序遍历,我们可以用同样的方法去构建左右子树,可以用递归完成。 ↩

你可能感兴趣的:(C,java,code,interestin)