当前位置: 首页 > news >正文

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

一、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

相关文章:

  • Netty Review - NioEventLoopGroup源码解析
  • 《CSS 简易速速上手小册》第4章:视觉美学(2024 最新版)
  • uniapp 开发一个密码管理app
  • Python四级考试笔记
  • 【Linux】vim的基本操作与配置(下)
  • html从零开始9:javaScript简介,语句、标识符,变量,JavaScript引入到文件【搬代码】
  • 高级前端面试题及详解
  • 打印最小公倍数
  • linux安装mysql8且初始化表名忽略大小写
  • 【微信小程序】微信小程序开发:从入门到精通
  • 线性代数笔记3--矩阵乘法和逆矩阵
  • C# CAD2016 判断多边形的方向正时针或逆时针旋转
  • 数据结构第十四天(树的存储/双亲表示法)
  • 【流程图——讲解】
  • Node.js开发-fs模块
  • python 人脸检测器
  • 基于ESP8266 开发板(MCU)遥控小车
  • 寒假学习记录16:Express框架(Node)
  • 搜索专项---最短路模型
  • Linux--编译器-gcc/g++使用
  • 49:49白热化,美参议院对新关税政策产生巨大分歧
  • 国际油价重挫!美股道指连跌三月,啥情况?
  • 停电催生商机,中国品牌 “照亮” 西班牙
  • 中国代表:美“对等关税”和歧视性补贴政策严重破坏世贸规则
  • 美国务院宣布新一轮与伊朗相关的制裁
  • 美乌矿产协议签署被曝“临门一脚”时生变,美方提附加条件