C++经典题目一:约瑟夫问题

博客探讨了经典的约瑟夫问题,通过描述问题背景,介绍了一种使用循环链表的C++解决方案,强调了利用代码实现过程来解决报数出列的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


约瑟夫问题描述:编号为1~N的N个人围顺时针方向坐一圈,每人手持一个密码(正整数),开始选一个正整数作为初始报数值m,从第一个人开始报数,报到第m个人时停止报数。报m的人出列,公布他手中的密码作为新的m值,然后从下一个开始报数,直到所有人全部出列为止。

思路:该问题用循环链表的方法很容易解出,具体见如下代码:

//====================================================================
//				this program resolved a Josephus loop problem
//				Achieved by a loop-list
//				if you have any questions, welcome to chat with me
//				QQ:88521134	Email:88521134@qq.com
//====================================================================
#include "stdafx.h"
#include <iostream>
using namespace std;

typedef struct node
{
	int data;
	node* next;
}node;

//========================================================================
// node* loop_create(int a[], int n):	use an array to create a loop-list 
// int a[]:	array
// int n:	the number of elements 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值