约瑟夫环问题的解决

使用数组解决约瑟夫环问题 package com.zzb.datastructure.singlelist; /** * @Auther: Administrator * @Date: 2020/1/17 15:31 * @Description: 使用 数组 解决 约瑟夫环 问题 * * 问题描述: * total 个人围成一圈,从第 index 个人起从 1 开始报数,数到 target 的那个人出队,... 阅读详情

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
///
/// 动态规划
///
namespace _约瑟夫环
{

/// <summary>
/// 设有n个人围坐在圆桌周围,
/// 现从某个位置m(1≤m≤n)上的人开始报数,
/// 报数到k的人就站出来。
/// 继续下一个人,即原来的第k+1个位置上的人,
/// 又从1开始报数,再报数到k的人站出来。
/// 依此重复下去,直到全部的人都站出来为止
/// </summary>
class Program
{
    /// <summary>
    /// 约瑟夫环问题求解方法
    /// </summary>
    /// <param name="sum">总人数</param>
    /// <param name="num">第几个人出局</param>
    static void YueSeFuHuan(int sum, int num)
    {
        int[] arr = new int[sum];
        for (int i = 0; i < sum; i++)
        {
            arr[i] = 1;
        }

        int count = 0;      //计数器
        int arrlength = arr.Length;  //剩余人数

        while (arrlength > 1)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] == 1)//重重要
                {
                    count++;
                    if (count == num)   //如果是规定(第几个人出局)
                    {
                        arr[i] = 0;   //第i个人出局
                        arrlength--;
                        count = 0;
                        Console.WriteLine("第{0}个人出局,编号是{1}", i + 1, i);
                    }
                }
            }
        }

        for (int i = 0; i < arr.Length; i++)
        {
            if (arr[i] == 1)
            {
                Console.WriteLine("第{0}个人留下,编号是{1}", i + 1, i);
            }

        }
    }
    public static int YueSeFuHuan(int m, int k, int i)
    {

        if (i == 1)
        {
            return (m + k - 1) % m;
        }
        else
        {
            return (YueSeFuHuan(m - 1, k, i - 1) + k) % m;

        }
    }
    static void Main(string[] args)
    {
        //YueSeFuHuan(10, 4);
        for (int i = 1; i <= 10; i++)
        {
            Console.WriteLine("第{0}人出局:", YueSeFuHuan(10, 4, i) + 1);
        }
        Console.ReadKey();
    }
}

}

MIPI D-PHY TX 一致性测试实例解析 Part 01 汽车电子领域,尤其是ADAS,伴随着摄像头的大规模布局,MIPI信号的使用日益频繁,关于它的验证与分析工作也变得日益关键 阅读详情

相关推荐

ECC密码的加密和解密(附带代码实现)

ECC,全称Elliptic Curve Cryptography,是椭圆曲线密码学。这是一种公钥加密技术,其安全性基于椭圆曲线离散对数问题,被广泛应用于信息安全领域。ECC的主要优势在于,相较于RSA和DSA等其他传统的公钥密码体系,它能够在提供相同安全级别的情况下,使用更短的密钥,从而减少计算量和存储空间的需求。例如,一个256位的ECC密钥提供的安全性可以与3072位的RSA密钥或DSA密钥相媲美。ECC的主要应用领域包括SSL安全证书、安全电子邮件、移动设备安全、物联网设备安全等。

xixixi7777的博客 8271

解决约瑟夫环的多种方法

本文可能是仅仅是分享一些解决约瑟夫环问题的算法,实现这个问题的代码

py_cpp_java_c的博客 1733

51单片机-点亮LED和蜂鸣器

ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。ULN2003是大电流驱动陈列,多用于单片机、只能仪表、PLC、数字量输出卡等控制电路中。可直接驱动蜂鸣器、继电器等负载。void delay(u16 i) // i等于1大约10uswhile(i--);//取反,高低电平不断变化,产生脉冲delay(10);// 周期200us。

三日沐水 1126

4种方法解决约瑟夫环问题

本篇文章我们总结了关于约瑟夫环问题的几种解法,它们各有优势,读者可以根据实际需要自行选择。好的问题可以引发学习者的思考,寻找更优解可以让攀登者更上一层楼。希望本篇文章能对你有所帮助,我们共勉。

m0_73355263的博客 1万+

HTPA 32x32d热成像传感器数据读取与校准全流程解析

本文详细解析了HTPA 32x32d热成像传感器的数据读取与校准全流程。从寄存器配置、原始数据采集,到核心的五大校准步骤(包括热量、电子偏移、电压、灵敏度补偿及温度转换),并涵盖像素重组、坏点修复及图像后处理,为开发者替代或升级MLX90640提供了完整、实用的操作指南。

weixin_29190169的博客 611

LuaJit分析(十一)去除string.dump函数

因此即使我们的指令顺序被打乱,通过loadfile系统调用,再通过string.dump调用,可以得到字节码文件,再通过与标准的luajit生成的字节码文件比对,即可找出差异所在。Lua脚本中的string.dump函数用于生成字节码文件,根据对 luajit -b命令的分析可以得出,最终dump出字节码文件都是使用的string.dump函数。同时lj_libdef.h和lj_ffdef.h这两个文件都是自动生成的,在msvcbuild.bat中,使用如下命令生成。

a545958498的博客 1132

约瑟夫环问题递归解法的一点理解

约瑟夫环递归解法代码的一点理解。 约瑟夫生者死者游戏 约瑟夫游戏的大意:30个游客同乘一条船,因为严重超载, 加上风浪大作,危险万分。因此船长告诉乘客,只有将全船 一半的旅客投入海中,其余人才能幸免于难。无奈,大家只 得同意这种办法,并议定 30 个人围成一圈,由第一个人数起,依次报数,数到第9人,便把他投入

yanweibujian的博客 3万+

在Windows10上安装WSL2

WSL2是微软提供的Windows子系统,允许在Windows 10和11上运行Linux环境,提供更好的性能和兼容性。安装WSL2需要启用WSL功能、更新系统、安装WSL2内核,并设置为默认版本。之后,可以通过Microsoft Store安装Linux发行版,并使用WSL命令启动和管理它们。

howard2005的专栏 5940

约瑟夫环解题

从0开始编号。m为第几个单位,n为m开始数起第n个单位。in_list为需要进行处理的列表。 返回order_list为序号出栈列表,out_list为单位出栈列表。 def od(m,n,in_list): out_list=[] order_list=[] times=len(in_list) s=[i for i in range(times)] for i in range(times): num=(m+n-1)%len(s)-1

qq_39515850的博客 339

R语言数据可视化:绘制世界地图的两种方案

本文介绍了两种使用R语言绘制世界地图的方案:包含边界边框和不包含边界边框。无论您选择哪种方案,使用ggplot2包和相关的地理数据包,我们可以轻松地绘制出漂亮的世界地图。R语言提供了丰富的包和函数,使我们能够轻松地绘制世界地图,并根据需求添加边界边框。在本文中,我将介绍两种绘制世界地图的方案:一种包含边界边框,一种不包含边界边框。在上述代码中,我们使用了与方案一相同的数据准备和地图绘制步骤,但省略了添加边界边框的代码。函数的调用,我们可以绘制不包含边界边框的世界地图。方案二:绘制不包含边界边框的世界地图。

CodeMaven的博客 2225

(11-3-01 )

以太坊(Ethereum)是一种基于区块链技术的开源平台和加密货币。它于2015年由Vitalik Buterin和Gavin Wood等开发者创建,并成为比特币之后最受欢迎的加密货币之一。以太坊不仅支持加密货币交易,还为开发者和企业提供了构建去中心化应用程序的强大工具。在本节的内容中,将实型一个完整的机器学习模型项目,智能检测出以太坊区块链中的非法账户。从问题定义到模型建立和评估,再到最终的总结和建议。本实例突出了处理类别不平衡问题的重要性,并展示了如何使用多种机器学习算法来解决实际问题。此外,通过数据可

码农三叔 2170

约瑟夫环问题求解--程序+详细注解

约瑟夫环问题起源于一个犹太故事。约瑟夫环问题的大意如下 罗马人攻占了桥塔帕特,41个人藏在一个山洞中躲过了这场浩劫。这41个人中,包括历史学家约瑟夫和他的一个朋友。剩余的39个人为了表示不向罗马人屈服,决定集体自杀。大家决定了一个自杀方案,所有这41个人围成一个圆圈,由第1个人开始顺时针报数,每报数为3的人就立刻自杀,然后再由下一个人继续报数,仍然是每报数为3的人就立刻自杀……,直到所有人都自杀

磷火的博客 9437

Rerender A Video 技术浅析(四):跨帧约束

时间一致性是指在视频处理过程中,保持相邻帧之间内容、风格和运动的平滑过渡,避免出现视觉上的不连续性或伪影。时间一致性跨帧约束模块的主要目标是在视频增强、风格迁移等任务中,确保处理后的视频在时间维度上保持一致性和稳定性。该模块主要通过以下几种方式实现时间一致性:1.时序损失(Temporal Loss):最小化相邻帧之间的差异,确保帧间内容的平滑过渡。2.循环一致性损失(Cycle Consistency Loss):确保帧间转换的一致性,避免出现风格漂移。3.

m0_75253143的博客 1480

Java解决约瑟夫环问题

文章目录1 约瑟夫环2 复杂的约瑟夫环 1 约瑟夫环 约瑟夫环问题起源于一个犹太故事。约瑟夫环问题的大意如下:   罗马人攻占了乔塔帕特,41个人藏在一个山洞中躲过了这场浩劫。这41个人中,包括历史学家Joseph(约瑟夫)和他的一个朋友。剩余的39个人为了表示不向罗马人臣服,决定集体自杀。大家决定了一个自杀方案,所有这41个人围成一个圆圈,由第1个人开始顺时针报数,每报数为3的人就立刻自杀,然由...

记录学习点滴 1513

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

用队列解决约瑟夫环问题

什么是约瑟夫环问题约瑟夫问题,有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.据说著名犹太历史学家 Jo...

czhf0002的博客 3762

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

链表解决约瑟夫环问题

现在用链表解决约瑟夫环问题,链表与数组的区别在于,链表的出列是删除结点,而数组并没有真正删除元素,只是标记为不存在。 上代码: #include #include #define MAX 10 typedef struct node V_NODE; struct node{ int id; struct node *next; }; V_NODE *create_link(int

Jacob 1250

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

如何用链表解决约瑟夫环问题

本文探讨了使用链表解决约瑟夫环问题的方法。约瑟夫环问题是一个经典的循环推理问题,涉及n个人围成一圈,按特定规则报数并出列。链表作为一种数据结构,能够有效模拟这一过程。文章详细介绍了创建环形链表、遍历链表、解决报数问题及处理剩余节点的基本思路,并提出了单链表实现法、栈实现法及使用第三方数据结构库等实现方法。此外,文章还分析了链表解决该问题的优缺点,如效率高、易实现,但也需考虑数据顺序性和一致性。最后,文章强调了根据具体需求选择合适实现方法的重要性,并指出了优化应用的方向。

2501_90410679的博客 87

约瑟夫环问题 例题解决

摘要 主要是之前一直不知道约瑟夫环的dp解法,这里和大家分享一下。本文用三种方法给大家呈现本题。 最后一条毛毛虫 题目描述 小D的花园里养了 n 条毛毛虫,每条毛毛虫都有自己独有的编号(从 1 到 n )。 一开始,所有的毛毛虫都开开心心地生活在花园里,享受着食物和阳光。 直到某一天,额……它们知道自己肯定会被吃掉,所以就开始玩一个游戏,来决定被吃的顺序。游戏的方法是这样的: 所有毛毛虫按照编号顺序从 11 到 n 顺时针围成一个环,然后从 1 号毛毛虫开始顺时针依次报数,报到数字 m 的毛毛虫就出环被吃,

qq_43780964的博客 1万+

java数组解决约瑟夫环问题

@运用JAVA数组解决约瑟夫环问题 简单介绍一下约瑟夫环问题: 约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。 话不多说,代码献上,代码的注释比较好理解哈,有不懂的私戳我,看到就会回复哈! 代码: package com.airui; import java.util.Scan...

做梦的稻草人的博客 2745

Java算法解决约瑟夫环问题

Java算法解决约瑟夫环问题

weixin_62656417的博客 712

利用JavaScript解决约瑟夫环的问题

问题背景:我们先来了解一下什么是约瑟夫环问题: 讲一个比较有意思的故事:约瑟夫是犹太军队的一个将军,在反抗罗马的起义中,他所率领的军队被击溃,只剩下残余的部队40余人,他们都是宁死不屈的人,所以不愿投降做叛徒。于是约瑟夫建议:每次由其他两人一起kill一个人,而被kill的人的先后顺序是由抽签决定的,约瑟夫有预谋地抽到了最后一签,在kill了除了他和剩余那个人之外的最后一人,他劝服了另外一个没死的人投降了罗马。let out=0//被kill的人数。let index=0//所循环的次数。

m0_73708717的博客 579

约瑟夫环问题解决

问题描述:编号为1-N的N个士兵围坐在一起形成一个圈,从编号为1的士兵依次开始报数(1,2,3..依次报),数到m的士兵会被杀死出列,之后的士兵再从1开始报数。直到最后剩下一士兵。求这个士兵的编号。 方法一:数组 第一次做这个题的时候,第一反应就是用数组来做。创建一个boolean数组,用true表示没出列,false表示出列,定义一个计数器,遍历数组,当加到与m相等时,就将true变为fal...

be_gin_ner的博客 394

python解决约瑟夫环问题(容易理解版)

python解决约瑟夫环问题(容易理解版) 约瑟夫环问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到k的那个人被杀掉;他的下一个人又从1开始报数,数到k的那个人又被杀掉;依此规律重复下去,直到圆桌周围的人只剩最后一个。 第一次写博客,请大家多多指教。 超级容易理解版: 思路:刚开始把所有的人放到一个列表里面去,报的数字不是3就把这个人放到列表的最后一...

自由小兵儿 4万+

c++解决约瑟夫环问题

c++解决约瑟夫环问题 问题背景 约瑟夫(Josephus)问题: m个人围坐成一圈,从1开始顺序编号 游戏开始,从第一个人开始由1到n循环报数 报到m的人退出圈外 问: 最后留下的那个人原来的序号 问题分析 本题可以定义一个容器(vector),初始化大小(元素个数)为n。容器里元素的值标识该人是否出局,1在圈内,0出局。值为0的人不再参与报数,可以用一个整数型k...

Yinan_Zheng的博客 1万+

C++解决猴王问题(约瑟夫环问题)

讲一个比较有意思的故事:约瑟夫是犹太军队的一个将军,在反抗罗马的起义中,他所率领的军队被击溃,只剩下残余的部队40余人,他们都是宁死不屈的人,所以不愿投降做叛徒。一群人表决说要死,所以用一种策略来先后kill所有人。于是约瑟夫建议:每次由其他两人一起kill一个人,而被kill的人的先后顺序是由抽签决定的,约瑟夫有预谋地抽到了最后一签,在kill了除了他和剩余那个人之外的最后一人,他劝服了另外一个没死的人投降了罗马。

dshycorz的博客 687

C语言解决约瑟夫环问题

C语言解决约瑟夫环问题

qq_41829337的博客 7673
上一篇: 重中之重的表格!快来看
下一篇: 关于《大话设计模式》OOP的简单笔记(一)
您大哥
博客等级 码龄8年 15粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值