SCUA 9496 Josephus问题
9496 Josephus问题
时间限制:1000MS 内存限制:65535K
提交次数:0 通过次数:0
题型: 编程题 语言: 无限制
Description
编写算法解决Josephus问题:设有n个人围在一个圆桌周围,现从第s个人开始报数,数到第m个人又出列…如此反复直到所有的人全部出列为只止。
Josephus问题是:对于任意给定的n,s和m,求出按出列次序得到的n个人员的序列。
Input
输入表示n,s,m的三个值,用空格分隔
Output
输出出列序列
Sample Input
8 3 4
Sample Output
6 2 7 4 3 5 1 8
Provider
sjjg
#include<stdio.h> #include<malloc.h> typedef struct CriCurt{ int data, flag; struct CriCurt *next; }Cri, *CriStr; typedef struct Point{ CriStr base, front; }Point; int InitPoint(Point* &T, int n) { int i, e; CriStr str, stp; T->base = (CriStr)malloc(sizeof(CriCurt)); T->base->data = n; T->base->flag = 1; T->base->next = NULL; T->front = T->base; for(i=1; i<=n; ++i) { if(!(str = (CriStr)malloc(sizeof(CriCurt)))) return 0; str->data = i; str->flag = 1; str->next = NULL; T->front->next = str; T->front = T->front->next; } T->front->next = T->base->next; return 1; } int ifflag(Point* T) { CriStr str, stp; str = T->base->next; while(str != T->front) { if(str->flag == 1) return 1; str = str->next; } if(str->flag == 1) return 1; return 0; } int Joseph(Point* &T, int s, int m) { CriStr str; int i, j, count = 0; str = T->base; for(i=1; i<s; ++i) str = str->next; while(ifflag(T) != 0) { for(i=1; i<=m; ++i) { str = str->next; while(str->flag == 0) str = str->next; } if(count++ == 0) printf("%d", str->data); else printf(" %d", str->data); str->flag = 0; } printf("\n"); } int FreePoint(Point* &T) { CriStr str, stp, stq; str = T->base->next; stp = str->next;; while(str != stp) { stq = stp->next; free(stp); stp = stq; } free(str); free(T->base); return 1; } int main() { Point* T; T = (Point*)malloc(sizeof(Point)); int n, s, m; T->base = T->front = NULL; scanf("%d%d%d", &n, &s, &m); InitPoint(T, n); Joseph(T, s, m); FreePoint(T); return 0; }
解题报告:
自学数据结构后学校OJ上的最后一道实验题,才发现原来不是这么好受的,WA了5次,想死的心都有了,对不起,只是想死的心,不是去死的心,野指针到处乱飞,最后弄得
不欢而散,无知竟是如此地可怕,下次不敢了!以此为戒,菜鸟坠地常有的事,加上约瑟夫环较为多见,这是最简单的一题,代码不简,为自己留着。

更多内容请关注个人微信公众号 物役记 (微信号:materialchains)
作者:雪影蓝枫
本文版权归作者和博客园共有,欢迎转载,未经作者同意须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?