C#,21根火柴棍问题(21 Matchticks Problem)的算法与源代码

一、21根火柴棍问题(21 Matchticks Problem)

21根火柴棍问题是西方经典游戏之一。

给定21根火柴,2个人A和B(比如:分别是计算机和用户)。

每个人一次可以挑选 1-- 4 根火柴。

被迫挑最后一根火柴的人输了。

二、确保自己胜利(玩赖)的办法

这个想法是考虑20根火柴棒,因为谁会选择最后一根火柴,谁就会输掉比赛。

将20分成四部分,即每个部分的大小为5。

因此,如果电脑选择了x根火柴棒,那么用户应该选择(5-x)根火柴棒,并以同样的方式进行操作。

这样,20根火柴将被使用,最后一根火柴将由计算机拾取。

源代码:

cs 复制代码
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

相关推荐
csdn_aspnet14 小时前
C# List 移除某个属性值中最大的值
开发语言·c#·list
悠仁さん14 小时前
哈夫曼树的简单介绍
算法
bIo7lyA8v14 小时前
算法与数据结构协同优化的设计思想的技术8
数据结构·算法
Lsk_Smion14 小时前
力扣实训 _ [98].验证二叉搜索树 _ 将二叉树展开成链表
数据结构·算法·leetcode
8Qi814 小时前
LeetCode 377:组合总和 Ⅳ(Combination Sum IV)—— 题解 ✅
算法·leetcode·动态规划·完全背包
凯瑟琳.奥古斯特14 小时前
力扣1002题C++解法详解
开发语言·c++·算法·leetcode·职场和发展
钟灵92114 小时前
C++【模板初阶】
开发语言·c++·笔记·c#
CHHH_HHH14 小时前
【C++】红黑树:比AVL树更实用的平衡二叉搜索树
开发语言·数据结构·c++·算法·stl
Lazionr14 小时前
基础算法 | 模拟算法练习
c++·算法
专注VB编程开发20年15 小时前
C#,VB.NET 生成debug日志文件
服务器·数据库·c#