H面试程序(2)josephus 问题

Josephus 问题(2) 一、题目 N人围成一个环,每个人一个编号1—n,然后1、2报数,报2出局,其余人继续,直至最后一人。求该人的编号。有时间限制 二、分析 找规律:我直接写出了n从1—17的最终答案,分别为:1、1、3、1、3、5、7、1、3、5、7、9、11、13、15、1…发现其是以2的幂次方为一个轮回,然后奇数增长。 分开更容易看清:1 1、3 1、3、5、7 1、3、5、7、9、11、13、15 个数刚好为1、2、4、8 三、算法实现 (主要代码) 算法实现如下: long long n,m, 阅读详情

       josephus问题其实就是一个游戏,一群小孩围成一个圈,设置一个数,这个数是个小于小孩总数大于0的一个整数,从第一个小孩开始报数,当其中一个小孩报到你设置的那个数的时候离开那个圈,这样一来反复报下去,直到只剩下最后一个小孩的时候那个小孩就是胜利者,写程序来找出这个小孩

      

 class Josephus  
 {  
 public:  
	 Josephus(int numofInput=10,int intervalofInput=1)  
	 {  
		 num = numofInput;  
		 interval = intervalofInput;  
	 }  
	 void initial();  
 protected:  
	 int num;  
	 int interval;  
 }; 

#include <iostream>  
#include "josephus.h"  
#include "ring.h"  
using namespace std;  

 void Josephus::initial()  
 {  
	 int num,interval;  
	 cout<<"请输入孩子总数:";  
	 cin>>num;  
	 if(num<2)  
	 {  
		 cout<<"孩子总数不能小于2,否则不能构成环链!";  
		 return;  
	 }  
	 cout<<"请输入抽选号码";  
	 cin>>interval;  
	 if(interval<1|interval>num)  
	 {  
		 cout<<"请输入抽选号码不能小于1或者大于小孩总数!";  
		 return;  
	 }  
	 Josephus::num=num;  
	 Josephus::interval=interval;  
	 Ring a(num);  
	 a.ShowRing(num);  
	 cout<<endl;    //前面算是一个初始化的工作
	 for(int i=1;i<num;i++)  //这边才是开始做游戏,要做num - 1次才能得出最后结果
	 {  
		 a.CountInterval(interval);  //开始数数
		 a.ShowWiner_loser();   //看是那个小孩要被剔除
		 a.OutChild();   //将出去的小孩剔除
	 }  
	 cout<<endl<<"胜利者是:";  
	 a.ShowWiner_loser();  
 }

struct Children  
 {  
	 int number;  
	 Children *next;  
 };  

 class Ring  
 {  
 public:  
	 Ring(int num)  
	 {  
		 josephus = new Children[num];  //josephus保存数组的首元素首地址
		 point = josephus;  
		 for(int i=1;i<=num;i++)  
		 {  
			 point->number = i;    //从1到num对数组进行标号
			 point->next = josephus + i % num;  
			 point=point->next;  
		 }  
		 point = &josephus[num-1];  //point指向最后一个小孩
	 }  
	 ~Ring()  
	 {  
		 delete[] josephus;  
	 }  
	 void ShowRing(int num);  
	 void CountInterval(int interval);  
	 void OutChild();  
	 void ShowWiner_loser();  
 protected:  
	 Children *josephus;  
	 Children *point;  
	 Children *cut_point;  
 }; 


#include <iostream>  
#include "ring.h"  

using namespace std;  
void Ring::ShowRing(int num)  
{  
	point=josephus;//也可以写成point=point->next;但前着效率高一点点  
	for(int i=1;i<=num;i++)  
	{  
		cout<<point->number<<",";  
		point=point->next;  
	}  
	point=&josephus[num-1];//输出过后恢复point应该在的位置  
}  
void Ring::CountInterval(int interval)//数小孩  
{  
	for(int i=0;i<interval;i++)  
	{  
		cut_point = point;  
		point = cut_point->next;  
	}  
}  
void Ring::OutChild()  
{  
	cut_point->next = point->next;//将不要节点断离  
	point=cut_point;  
}  
void Ring::ShowWiner_loser()  
{  
	cout<<point->number<<",";  
} 


#include <iostream>  
#include "josephus.h"  
 using namespace std;  

 void main()  
 {  
	 Josephus a;  
	 a.initial();  

 } 



  
//程序作者:管宁  
//站点:www.cndev-lab.com  




构建决策智能系统:从用户行为序列建模到Uplift Modeling的实战解析 在数据驱动的业务场景中,如何将海量数据转化为可执行的智能决策,是提升运营效率和业务增长的关键。其核心原理在于通过机器学习模型深度理解用户行为模式,并精准评估不同干预措施带来的增量价值。这涉及到用户行为序列建模、因果推断等关键技术,能够有效解决传统方法中存在的样本选择偏差和归因困难等问题。从技术价值看,这类系统不仅能实现从“数据告知”到“决策建议”的跨越,更能通过自动化闭环持续优化,直接驱动用户留存、转化等核心指标提升。典型的应用场景包括用户流失预警、个性化营销策略生成、资源约束下的最优干预分配等。本文以“留 阅读详情

相关推荐

约瑟夫环问题C语言/C++实现详解

约瑟夫环(Josephus Problem)是一个经典的理论与算法问题,起源于公元1世纪犹太历史学家弗拉维奥·约瑟夫的传说。问题描述为:n个人围成一圈,从某人开始报数,每次数到m的人被淘汰,剩下的人继续从下一个位置开始重复此过程,直至仅剩一人。该问题不仅在数学领域有深入研究,也广泛应用于算法设计、数据结构教学和实际编程中。在计算机科学中,约瑟夫环常用于演示循环结构、数组、链表、递归等核心概念,是理解程序逻辑与算法优化的理想案例。

weixin_31720909的博客 1118

一群小孩围成一个圈的经典算法

问题: 一群小孩围成一个圈,设置一个数,这个数是个小于小孩总数大于0的一个整数,从第一个小孩开始报数,当其中一个小孩报到你设置的那个数的时候离开那个圈,这样一来反复报下去,直到只剩下最后一个小孩的时候那个小孩就是胜利者,写程序来找出这个小孩。import java.util.ArrayList;public class Test { static int count=0; static fin

bjxiaxueliang的CODING小栈 4853

吉大软工C++上机实验全集:18个实操项目源码+详细报告(含快排、矩阵乘、约瑟夫环等)

这套资料完整覆盖吉林大学软件工程专业大一下学期C++上机实验全部内容,共18个实操项目,从基础输入输出开始,逐步深入到字符串处理、数组操作、函数与递归、结构体和文件读写,最后落实到经典算法实现。具体包括ch1_2/ch1_3的基础格式化输入输出,ch2_2的进制转换(八进制/十六进制输出),ch2_3/ch2_4的填充字符设置与左右对齐控制,ch4系列的字符串查找、替换、反转、统计等操作,ch5_2/ch5_3的函数封装与递归应用(如阶乘、斐波那契),ch6_3/ch6_5的结构体定义与文本文件读写,以及c

life6的博客 206

josephus问题的解法

         josephus问题其实就是一个游戏,一群小孩围成一个圈,设置一个数,这个数是个小于小孩总数大于0的一个整数,从第一个小孩开始报数,当其中一个小孩报到你设置的那个数的时候离开那个圈,这样一来反复报下去,直到只剩下最后一个小孩的时候那个小孩就是胜利者,写程序来找出这个小孩。  

lwsogood的专栏 1260

约瑟夫环(Josephus)问题

该文件是约瑟夫环(Josephus)问题的程序,程序简单,对同学们做这个程序的时候有据可依,很好的分析了这个问题的程序。

深空探测处理软件USGS-ISIS的下载安装

深空探测处理软件USGS-ISIS下载安装教程

qq_31721595的博客 3313

Josephus问题是下面的游戏 N个人从1到N编号 围成一个圈 经过M次传递后拿着热土豆的人被清除离座

数据结构与算法分析——c语言描述 练习3.9 答案 N%M,二是大于n/2可以逆向传,想不懂不写这个 doubleList.h typedef int ElementType; #ifndef _double_List_H #define _double_List_H struct Node; typedef struct Node *PtrToNode; typede

wwj_bupt 2860

基于Transformer和图卷积网络的时空人体运动预测网络

本文主要介绍了基于Transformer和图卷积网络的时空人体运动预测网络。首先,文章详细阐述了Transformer模型的原理和优点,指出其通过自注意力机制实现序列数据的建模和处理,能够捕捉长距离依赖关系。然后,文章介绍了图卷积网络的基本概念和应用场景,强调其通过邻居节点信息聚合实现空间特征的提取和融合。接着,文章详细设计了时空人体运动预测网络的总体架构,包括基于Transformer的时间特征提取模块、基于图卷积的空间特征融合模块以及时空特征联合预测模块。

babyai996的博客 1481

C++经典面试题(十二)

最近看一些面试题,觉得如果自己被问到了,并不能很利落的回答出来。 一是从来没有这个意识,二是没有认真的梳理下。 下面对这些题做出分析,哈!个人能力有限,其中难免有疏漏,欢迎大家补充咯! 96.字符串的替换操作replace (String &s, String &t, String &v)是指: 若t是s的子串,则用串v替换串t在串s中的所有出现;若t不

my_adu的专栏 2481

【AI之路】cmd命令行通过Huggingface镜像站快速下载模型文件的方法

Hugging Face Hub 是分享机器学习模型、演示、数据集和指标的首选之地。huggingface_hub 库可以轻松下载Huggingface上有用的模型和数据集元数据。但大模型文件通常较大,国内下载太慢,那有没有高效便捷的方法?这个当然必须有!看到了吗?只是添加一个参数,下载大模型就搞定了。当然也可以使用python程序来下载。具体见前期博文:【AI之路】使用huggingface_hub通过huggingface镜像站hf-mirror.com下载大模型(附代码,实现大模型自由)

IT里的交易员-博客 1859

Sony DPT RP1/CP1破解攻略

前言 自己有一台Sony DPT CP1和一台kindle,两个都已经用了很多年。直到最近发现微信读书上经常可以找到一些免费而且不错的书,所以就萌生了在两台机器上使用微信读书的想法。kindle比较容易实现,直接打开内置浏览器,进入微信读书网页版就行了,而Sony的电纸书则只能通过破解+安装微信读书的方式实现。大概弄了两三个小时吧,也遇到了一些问题,所以这里记录一下整个过程,希望能方便后来的使用者。 首先感谢HappyZ, osc_t5nbj8ds。前者是提供公开破解的方法的大神,后者则是解决了我遇到的问题

weixin_43467572的博客 1万+

数据结构面试题:josephus排列,循环链表

Josephus问题 http://hi.baidu.com/yishugao/item/97c88c8bdd4ec058850fab55     问题描述:设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人开始报数,数到m的人又出列,如此重复,直到所有的人全部出列。Josephus问题是:对于任意给定的n,m,s,求出按出列次序得到

yuluohaibin的专栏 1013

PySpark 本地开发环境搭建与实践

本文详细介绍了 PySpark 本地开发环境的搭建过程,包括 JDK、Hadoop、Anaconda、PySpark 的安装以及 Pycharm 工程的创建。同时,深入讲解了代码编写、本地开发案例(如 WordCount、处理特殊分隔符、读取 hdfs 数据、获取外部变量)、Spark 程序的监控和 local 模式下结果文件数量问题等内容。通过掌握这些知识和技能,读者可以在 Windows 本地环境中高效地进行 PySpark 开发,处理大规模数据,解决实际业务中的数据分析和处理问题。

天冬忘忧的博客 3014

死亡游戏、猴子选大王——约瑟夫环问题

题目: 据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行

hover_load的博客 1590

DC综合中set_dft_signal的实战配置与优化策略

本文深入解析了DC综合中set_dft_signal命令的实战配置与优化策略。文章从命令的核心作用出发,详细拆解了-view、-type、-usage等关键参数,并通过扫描使能与时钟门控的实战案例,展示了如何正确配置以实现测试模式下的功耗优化。同时,文章总结了高级优化策略、与低功耗流程的协同方法以及常见错误排查清单,旨在帮助数字芯片设计工程师构建高可测性、低功耗的稳健DFT基础。

weixin_28347369的博客 403

使用AI预测彩票的架构思路

彩票是随机的数字游戏,不要过度依赖AI,本文仅供娱乐研究

淘淘小窝 9413

C/C++语言基础进阶算法备赛面试 经典、实用、趣味 程序设计编程300例精解每日一练第26天

备赛蓝桥杯,大学电子设计大赛,C语言提高,算法准备,定位大厂刷题,所以每天一练,不是很适合新手,适合长期规划有一定基础的同学跟上,每日文档由三部分组成,基础题(适合备赛国二),趣味题(适合有兴趣的同学),经典算法题(适合更高要求)组成。当然本意是记录自己训练的过程,基础题基本能做出来,能给自己一个正面回馈,趣味题可以培养兴趣,经典算法题用于真正来训练自己,开眼见长见识,在遇到困难的问题有更好的解决办法,最关键是每天三个题充分利用了零碎时间,细水才能长流,共勉坚持!!!!

hhinshenyuan的博客 267

飞牛fnNAS个人小账本导入微信账单

本文介绍了将微信支付账单导入ezBookkeeping个人记账系统的详细方法。首先通过微信申请导出账单文件,接收后需进行Excel预处理:删除前导行、添加账户和分类列、整理金额格式等。在ezBookkeeping中需预先设置"微信"分类和账户。导入时需注意列映射关系,包括交易时间、账户名称等关键字段的对应设置。文章还提到处理交易标签、格式转换等细节问题,并建议避免使用"修改余额"功能。该方法同样适用于支付宝账单导入,解决了直接导入可能出现的格式不兼容问题。

dgnankai的专栏 482

第二话 链表

2. 链表 2.1 链表原理介绍 链表是有序的列表,他在内存中的存储如下: 链表是以节点的方式存储 每个节点包含data域,next域:指向下一个节点 如图:发现链表的各个节点不一定是连续存储 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定 单链表(带头结点)逻辑结构示意图:最后指向null表示链表结束 2.2 代码实现 这个并没有考虑顺序,直接添加到链表的尾部。 package DataStructures; public class SingleLinkedListDemo

dong24k的博客 143

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

PHP高级开发核心知识点与面试实战指南

HTTP协议状态码是Web开发的基础概念,其中503状态码常用于服务降级,配合Retry-After头部可有效防止系统过载。在PHP开发中,魔术方法如__call()能实现灵活的链式调用,而类型约束则提升了代码健壮性。数据库优化方面,存储引擎选型直接影响性能,分库分表策略能解决海量数据存储问题。安全防护需构建SQL注入防御体系和CSRF双验证方案。性能优化可通过XHProf分析工具定位瓶颈,OPcache配置提升执行效率。这些技术在电商秒杀、高并发系统等场景中具有重要应用价值,本文通过具体代码示例解析PHP

weixin_34130389的博客 355

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【应聘笔记系列】三个常见链表笔试题

链表是经常应聘时经常考察的重要数据结构,今日复习了一下并就几个几个代表性问题上机调试了一下程序。1、  单链表问题Ø         单链表的反转:这个问题似乎在面试和笔试中特别受宠,屡屡出现.解决方法:用三个指针。代码如下:node *reverse(node *head){ node *p1,p2,p3; if(head==NULL || head->next==N

寸先生的AI道路 3129

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

单链表的基本操作和链表的面试题

List.h #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;assert.h&gt; #include&lt;malloc.h&gt; typedef int DataType; typedef struct Node { ...

追梦的小蚂蚁 308

中科创达java社招凉凉,我要个14k都不行吗?

本文系统总结了Java核心技术要点,涵盖JVM机制、数据结构、多线程等核心知识点。主要内容包括:1)Java面向对象特性与多态实现原理;2)JMM内存模型与GC机制;3)IO模型对比(BIO/NIO/AIO);4)二叉树遍历与经典算法(快速排序、二分查找);5)集合框架对比(HashMap/TreeMap、ArrayList/LinkedList);6)多线程通信与同步方案;7)JVM调优与故障排查方法。文中提供了20余个典型代码示例(如约瑟夫环、循环队列等),适合Java开发者系统复习核心知识体系。

油墨香^-^的博客 695

C语言链表面试题

SeqList.h#pragma once #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; #include&lt;assert.h&gt; typedef int DataType; typedef struct Node { struct Node* next; DataType Data;...

baidu_37964044的博客 340

3月10日打卡--结构体

题目:C++编程考试使用的实时提交系统,具有即时获得成绩排名的特点。它的功能是怎么实现的呢?我们做好了题目的解答,提交之后,要么“AC”,要么错误,不管怎样错法,总是给你记上一笔,表明你曾经有过一次错误提交,因而当你一旦提交该题“AC”后,就要与你算一算帐了,总共该题错误提交了几回。虽然你在题数上,大步地跃上了一个台阶,但是在耗时上要摊上你共花去的时间。特别是,曾经有过的错误提交,每次都要摊上一定的单位时间分。

m0_74389051的博客 398

【C++】链表实现的各种情况(含面试题)

1.比较顺序表和链表的优缺点,描述他们分别在什么场景下使用?答:顺序表在空间上是连续的,并支持随机访问,用下标会很方便。在不增容的情况下,尾插的效率很高,但其他情况就不是很乐观。顺序表的高速缓存的利用率比链表高。而链表的头插以及中间插入的效率要比顺序表的效率要高,链表若需要增容会比顺序表要方便的多。

hei我在这 508
上一篇: H面试程序(1)编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的 下一秒
下一篇: char str[] 和 char *str的区别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值