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

约瑟夫问题

约瑟夫问题

题目描述

n n n 个人围成一圈,从第一个人开始报数,数到 m m m 的人出列,再由下一个人重新从 1 1 1 开始报数,数到 m m m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

输入格式

输入两个整数 n , m n,m n,m

输出格式

输出一行 n n n 个整数,按顺序输出每个出圈人的编号。

样例 #1

样例输入 #1

10 3

样例输出 #1

3 6 9 2 7 1 8 5 10 4

提示

1 ≤ m , n ≤ 100 1 \le m, n \le 100 1m,n100

题解

#include<stdio.h>
#include<stdlib.h>
struct node {int ID;struct node* next;
};
struct node* add_to_list(struct node* p, int id)
{struct node* new_node = malloc(sizeof(struct node));p->next = new_node;new_node->next = NULL;new_node->ID = id;return new_node;
}
//在尾部插入并且赋值IDint main(void)
{int n = 0, m = 0;scanf("%d%d", &m, &n);struct node* head = malloc(sizeof(struct node));head->ID = 1;head->next = NULL;struct node* end = head;for (int i = 2; i <= m; i++){end = add_to_list(end, i);}end->next = head;//尾部指向头部,构成循环链表for (int i = 1; i <= m; i++){for (int x = 1; x <= n - 2; x++){head = head->next;}if (i >= 2) printf(" ");printf("%d", (head->next)->ID);struct node* cur=(head->next);head->next = (head->next)->next;head = head->next;free(cur);//释放被删除结点的内存}
}

循环链表

http://www.lryc.cn/news/273031.html

相关文章:

  • 文件管理方法:利用文件大小进行筛选,高效移动文件至目标文件夹
  • python报错:TypeError: Descriptors cannot be created directly.
  • Linux 内核调试
  • Prometheus-AlertManager 邮件告警
  • Volcano Controller控制器源码解析
  • 开源协议简介和选择
  • 大创项目推荐 深度学习卫星遥感图像检测与识别 -opencv python 目标检测
  • pod的环节
  • Unity | Shader基础知识番外(向量数学知识速成)
  • 一个小白的微不足道的见解关于未来
  • 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
  • 抖店做不起来?新手常见起店失败问题总结,看下你中了几条?
  • 【每日面试题】精选java面试题之redis
  • OSCP 靶场 - Vault
  • uniapp子组件向父组件传值
  • 过滤特殊 微信昵称
  • LLM、AGI、多模态AI 篇一:开源大语言模型简记
  • 微信小程序中获取用户当前位置的解决方案
  • Vue3-35-路由-路由守卫的简单认识
  • 制药企业符合CSV验证需要注意什么?
  • 再谈动态SQL
  • 【数据结构】树
  • 【Midjourney】AI绘画新手教程(一)登录和创建服务器,生成第一幅画作
  • 对比 PyTorch 和 TensorFlow:选择适合你的深度学习框架
  • Oracle笔记-查看表已使用空间最大空间
  • 大数据HCIE成神之路之特征工程——特征选择
  • python 正则-常见题目
  • 解析:Eureka的工作原理
  • RecyclerView 与 ListView 区别和使用
  • 力扣232. 用栈实现队列