C#,洗牌问题(Card Shuffle Problem)的算法与源代码

news/发布时间2024/5/14 18:46:04

洗牌问题(Card Shuffle Problem)

洗牌问题(Card Shuffle Problem)的基本描述

你有 100 张牌,从 1 到 100。
你把它们分成 k 堆,然后按顺序收集回来。
例如,如果您将它们分成 4 堆,那么第一堆将包含编号为 1、5、9、…的卡片,
第四堆将包含编号为 4、8、12、…在收集您首先收集的卡片时,
将最后一堆从下往上翻,然后拿起第三堆,从下往上翻,将卡片放在第四堆的上面,以此类推。
下一轮,你将牌分发到另一组牌堆中,并以同样的方式收集(最后一堆先,第一堆后)。
如果我们有 10 张牌,并把它们分成 2 堆,
牌堆中的牌的顺序(从上到下)将是 9、7、5、3、1 和 10、8、6、4、2 我们翻转牌堆,
得到顺序 1、3、5、7、9 和 2、4、6、8、10 我们把第二堆放在底部,
第一堆放在顶部,得到一副牌 1、3、5、7、9、2、4, 6、8、10 给定回合数(m),
每回合的桩数(ki),你需要写一个程序,在最后一轮结束时从顶部找到第 n 张牌。

2 源程序

using System;
using System.Collections;
using System.Collections.Generic;namespace Legalsoft.Truffer.Algorithm
{public static partial class Algorithm_Gallery{private static int CARDS = 100;private static void Current_Round(List<int> list, int totalPiles){int i;List<List<int>> piles = new List<List<int>>();for (i = 0; i < totalPiles; i++){piles.Add(new List<int>());}int j = 0;for (i = 0; i < CARDS; i++){piles[j].Add(list[i]);j = (j + 1) % totalPiles;}int pileNo = 0;i = 0;j = 0;while (i < CARDS){list.Insert(i, piles[pileNo][j]);j++;if (j >= piles[pileNo].Count){pileNo++;j = 0;}i++;}}public static int Perform_Rounds(int[] piles, int rounds, int n){List<int> list = new List<int>();for (int i = 1; i <= CARDS; i++){list.Add(i);}for (int i = 0; i < rounds; i++){Current_Round(list, piles[i]);}return list[n];}}
}

using System;
using System.Collections;
using System.Collections.Generic;

namespace Legalsoft.Truffer.Algorithm
{
    public static partial class Algorithm_Gallery
    {
        private static int CARDS = 100;

        private static void Current_Round(List<int> list, int totalPiles)
        {
            int i;

            List<List<int>> piles = new List<List<int>>();
            for (i = 0; i < totalPiles; i++)
            {
                piles.Add(new List<int>());
            }
            int j = 0;
            for (i = 0; i < CARDS; i++)
            {
                piles[j].Add(list[i]);
                j = (j + 1) % totalPiles;
            }

            int pileNo = 0;
            i = 0;
            j = 0;
            while (i < CARDS)
            {
                list.Insert(i, piles[pileNo][j]);
                j++;
                if (j >= piles[pileNo].Count)
                {
                    pileNo++;
                    j = 0;
                }
                i++;
            }
        }

        public static int Perform_Rounds(int[] piles, int rounds, int n)
        {
            List<int> list = new List<int>();
            for (int i = 1; i <= CARDS; i++)
            {
                list.Add(i);
            }
            for (int i = 0; i < rounds; i++)
            {
                Current_Round(list, piles[i]);
            }
            return list[n];
        }
    }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.bcls.cn/Hxdm/1722.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

Redis篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、Redis 的持久化机制是什么?各自的优缺点?二、Redis 常见性能问题和解决方案:三、redis 过期键的删除策略?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

Hadoop:认识MapReduce

MapReduce是一个用于处理大数据集的编程模型和算法框架。其优势在于能够处理大量的数据&#xff0c;通过并行化来加速计算过程。它适用于那些可以分解为多个独立子任务的计算密集型作业&#xff0c;如文本处理、数据分析和大规模数据集的聚合等。然而&#xff0c;MapReduce也有…

《区块链公链数据分析简易速速上手小册》第1章:区块链基础(2024 最新版)

文章目录 1.1 区块链技术概览:深入探究与实用案例1.1.1 区块链的核心概念1.1.2 重点案例:供应链管理1.1.3 拓展案例 1:数字身份验证1.1.4 拓展案例 2:智能合约在房地产交易中的应用1.2 主流公链介绍1.2.1 公链的核心概念1.2.2 重点案例:以太坊上的去中心化金融(DeFi)1.2…

第六十四天 服务攻防-框架安全CVE复现Apache shiroApache Solr

第六十四天 服务攻防-框架安全&CVE复现Apache shiro&Apache Solr 知识点: 中间件及框架列表: IIS,Apache,Nginx,Tomcat,Docker,K8s,Weblogic.JBoos,WebSphere, Jenkins,GlassFish,Jetty,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Spring, Flask,jQuery等 1、开发框…

Rust中不可变变量与const有何区别?

Rust作者认为变量默认应该是immutable&#xff0c;即声明后不能被改变的变量。这一点是让跨语言学习者觉得很别扭&#xff0c;不过这一点小的改变带来了诸多好处&#xff0c;本节我们来学习Rust的变量。 什么是变量&#xff1f; 如果你初次学习编程语言&#xff0c;变量会是一…

【C++】初始化列表、static成员、友元、匿名对象、附练习题

文章目录 前言一、构造函数【初始化列表】1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字 二、static成员2.1 概念2.2 特性 三、友元3.1 友元函数3.2 内部类 四、匿名对象4.1 拷贝对象时的一些编译器优化 五、再次理解类和对象六、练习题6.1 求123...n&#xff0c;要求不…

Arduino 单片机也可以直连涂鸦云,轻松实现智能控制

涂鸦 MCU 通用协议接入开发方式&#xff0c;开发者通过 MCU-SDK 和 涂鸦标准协议模组即可快速接入涂鸦云。在开发过程中&#xff0c;开发者只需在 MCU 侧添加少量代码进行协议适配&#xff0c;就可建立设备与云端的信息交互通道&#xff0c;无需关心复杂的云端通讯协议,开发者也…

Input Output模型

一、I/O介绍 I/O在计算机中指Input/Output&#xff0c; IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数)&#xff0c;是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量&#xff0c;一般以每秒处理的I/O请求数量为单位&#xff0c;I/O…

BUGKU-WEB 矛盾

题目描述 进入场景看看&#xff1a; 代码如下&#xff1a; $num$_GET[num]; if(!is_numeric($num)) { echo $num; if($num1) echo flag{**********}; }解题思路 需要读懂一下这段PHP代码的意思明显是一道get相关的题目&#xff0c;需要提供一个num的参数,然后需要传入一个不…

《Solidity 简易速速上手小册》第10章:区块链项目实战(2024 最新版)

文章目录 10.1 分析真实的 Solidity 项目10.1.1 基础知识解析进一步的知识探索实际操作技巧 10.1.2 重点案例&#xff1a;去中心化预测市场案例 Demo&#xff1a;创建去中心化预测市场案例代码PredictionMarket.sol - 智能合约前端界面 测试和验证拓展功能 10.1.3 拓展案例 1&a…

ChatGPT丨“成像光谱遥感技术中的AI革命:ChatGPT应用指南“

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能…

web 网站如何降低 cookie 泄露的风险?

随着互联网的普及&#xff0c;网站的安全性越来越受到人们的关注。其中&#xff0c;cookie的安全性更是重中之重。因为cookie中存储了用户的个人信息&#xff0c;一旦被非法获取&#xff0c;后果不堪设想。那么&#xff0c;如何降低cookie泄露的风险呢&#xff1f;本文将从以下…

web安全学习笔记【11】——信息打点(1)

信息[1] 打点-Web应用&企业产权&指纹识别&域名资产&网络空间&威胁情报[2] [3] #知识点&#xff1a; 1、业务资产-应用类型分类 2、Web单域名获取-接口查询 3、Web子域名获取-解析枚举 4、Web架构资产-平台指纹识别 #章节点 Web&#xff1a;语言/CMS/中间件…

可视化和跟踪机器学习实验的工具——Wandb

简介&#xff1a;用于可视化和跟踪机器学习实验的工具。Weights & Biases 是一个机器学习平台&#xff0c;供开发人员更快地构建更好的模型。使用 W&B 的轻量级、可互操作的工具快速跟踪实验、对数据集进行版本和迭代、评估模型性能、重现模型、可视化结果和发现回归&a…

解锁VIP会员漫画:用Python爬虫轻松实现高清漫画下载

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.10 Pycharm 模块使用: requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块…

相机图像质量研究(18)常见问题总结:CMOS期间对成像的影响--CFA

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

微服务—ES数据同步

目录 数据同步 问题分析 方案1. 同步调用 方案2. 异步通知 方案3. 监听binlog​编辑 各方案对比 案例——利用MQ实现数据同步 步骤1. 导入hotel-admin项目 步骤2. 声明交换机、队列 步骤3. 发送MQ消息 步骤4. 接收MQ消息 步骤5. 测试同步功能 数据同步 elasticsea…

Go应用性能分析实战

Go很适合用来开发高性能网络应用&#xff0c;但仍然需要借助有效的工具进行性能分析&#xff0c;优化代码逻辑。本文介绍了如何通过go test benchmark和pprof进行性能分析&#xff0c;从而实现最优的代码效能。原文: Profiling Go Applications in the Right Way with Examples…

解决Edge浏览器,微博无法查看大图(Edge Image Viewer)

使用Edge浏览器浏览微博或其它带校验的图片时&#xff0c;会导致无法查看。 主要原因为Edge自带了一个Edge Image Viewer, 但是该图片查看器无法查看带校验数据的图片&#xff0c;所以导致查看时一片空白。 解决方法 地址栏输入 edge://flags/搜索 Edge Image Viewer选择 Disa…

python+django+vue汽车票在线预订系统58ip7

本课题使用Python语言进行开发。基于web,代码层面的操作主要在PyCharm中进行&#xff0c;将系统所使用到的表以及数据存储到MySQL数据库中 使用说明 使用Navicat或者其它工具&#xff0c;在mysql中创建对应名称的数据库&#xff0c;并导入项目的sql文件&#xff1b; 使用PyChar…
推荐文章