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

相关推荐
小羊没烦恼!2 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
昂好的day4 小时前
VisionMaster 通信模块实战(上):Modbus、TCP 收发、协议组装解析
开发语言·网络·网络协议·tcp/ip·c#
罗湖老棍子4 小时前
【例 1】Sightseeing Trip(信息学奥赛一本通- P1494)(洛谷-P10927)
数据结构·算法·图论·最短路·floyd·最小环
stsdddd6 小时前
YOLO算法建筑工地安全帽目标检测数据集16881张:标注核对笔记
算法·yolo·目标检测
波力海苔夹心脆6757 小时前
C# 正则表达式零基础入门:从“看得懂“到“会用“
经验分享·后端·mysql·正则表达式·c#
CV爱数码7 小时前
论文精读|Learned Primal-Dual:把原始–对偶算法展开成网络
图像处理·算法·计算机视觉·ct·重建·断层扫描
yuniko-n7 小时前
【算法】约瑟夫环问题
java·算法
l1t8 小时前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
Nil2088 小时前
LeetCode 283移动零
数据结构·算法·leetcode
CQU_JIAKE8 小时前
10.18【A】
算法