约瑟夫环的问题
2015-10-23 21:39
316 查看
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时把编号从0~n-1,最后结果+1即为原问题的解。 原理: 1、一群人围在一起坐成环状(如:N) 2、从某个编号开始报数(如:K) 3、数到某个数(如:M)的时候,此人出列, 4、一直循环,直到所有人出列,
pLinkNode JosephusCycle(pLinkNode Head, int k)
{
pLinkNode begin = Head;
pLinkNode del;
assert(Head);
while (1)
{
if (begin->_next == Head)
return begin;
int count = k - 1; //走的步数
while (count--)
{
begin = begin->_next;
}
del = begin->_next;
printf("%d ", begin->_data);
begin->_data = begin->_next->_data;
begin->_next = begin->_next->_next;
free(del);
}
assert(begin->_data == 1); //判断是否剩一个
return begin;
}
程序写完了,但是最后结果好像不太对
相关文章推荐
- Lua教程(五):C/C++操作Lua数组和字符串示例
- C/C++实现快速排序的方法
- C/C++常用函数易错点分析
- Mac下使用Eclipse编译C/C++文件出现 launch failed, binary not found 解决方案
- 把Lua函数传递到C/C++中实例
- C/C++中退出线程的四种解决方法
- 浅析C/C++中sort函数的用法
- Notepad++配置C/C++IDE(详细)
- C 堆栈,运行时类型挷定
- 初识libjpeg
- 【推荐】The Function Pointer Tutorials
- 分享自己写的一个贪吃蛇的游戏(Linux)
- 分享一个蛋疼的俄罗斯方块小游戏
- Linux下的字符界面扫雷游戏
- linux下的图形界面扫雷游戏(Gtk+2.0)
- for_each宏
- 让android支持RTSP及live555分析
- C++ Template中防止使用不完整类型
- Windows平台下如何检测C/C++内存泄露?
- C++中指定小数位数输出