C#,21根火柴棍问题(21MatchticksProblem)的算法与源代码
- 软件开发
- 2025-08-04 04:33:01

一、21根火柴棍问题(21 Matchticks Problem)
21根火柴棍问题是西方经典游戏之一。
给定21根火柴,2个人A和B(比如:分别是计算机和用户)。 每个人一次可以挑选 1-- 4 根火柴。
被迫挑最后一根火柴的人输了。
二、确保自己胜利(玩赖)的办法这个想法是考虑20根火柴棒,因为谁会选择最后一根火柴,谁就会输掉比赛。 将20分成四部分,即每个部分的大小为5。 因此,如果电脑选择了x根火柴棒,那么用户应该选择(5-x)根火柴棒,并以同样的方式进行操作。 这样,20根火柴将被使用,最后一根火柴将由计算机拾取。
源代码:
using System; using System.Text; using System.Collections; using System.Collections.Generic; namespace Legalsoft.Truffer.Algorithm { public static partial class Algorithm_Gallery { public static List<int> Twentyone_Matchstick(int[] arr) { int N = arr.Length; List<int> list = new List<int>(); for (int i = 0; i < N; i += 1) { list.Add(5 - arr[i]); } return list; } } } 三、更多的火柴棍当然可以设计更多火柴棍的游戏。
其基本原则是,假设火柴棍为 M+1 根 ,选择游戏限制为每次拿 1---N 根火柴。 M,N 应该有一个合适的 公约数!
POWER BY TRUFFER.CN BY 315SOFT.COM
C#,21根火柴棍问题(21MatchticksProblem)的算法与源代码由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C#,21根火柴棍问题(21MatchticksProblem)的算法与源代码”
上一篇
C++STL->list模拟实现