zoukankan
html css js c++ java
约瑟夫环,杀人游戏(静态循环链表实现)
觉得用静态循环链表最划算了。
1、动态链表要动态分配,指针移来移去,释放指针等等,弄得很烦,容易出错。
2、用循环链表是当然的了。
// DS: 似循环静态链表 #include <iostream> #include <cstdio> //#include <cstdlib> using namespace std; int Kill_You( const int sum = 1, const int distance = 1, const int start = 1) { // 一共参加自杀的人数有 sum 个,每 distence 个人就杀一个,从第 start 个人开始报数; // 返回留下的那个人的位序 int pi = start - 1; int pj = 0; int *S = (int *)malloc( sum * sizeof(int) ); //不设头结点 if (!S) cout << "Error!" << endl; for (int i = 0; i < sum; i++) // 为人编号,第一个人为0 S[i] = i + 1; S[sum - 1] = 0; // 尾结点与首元结点接上 cout << "依次杀掉:" << endl; for (int count1 = sum - 1; count1--; ) { for (int count2 = distance - 1; count2--; ) { pj = pi; // pj跟踪pi,以便删除结点 pi = S[pi]; } cout << pi + 1 << ' '; // 杀掉下标是pi的那个人,即删除该结点 S[pj] = S[pi]; // pj是pi的前一个值 pi = S[pi]; } free(S); cout << endl; return pi + 1; } int main() { int s; // s 表示总人数 int d; // d 表示每d个人就杀掉一个(杀掉说出d的那个人) int k; // k 表示第k个人开始报数 while (1) { cout << "请输入人数(正整数):" << endl; cin >> s; cout << "请输入报数(正整数):" << endl; cin >> d; cout << "从第几个人开始报数:" << endl; cin >> k; printf( "留下第%d个人\n\n", Kill_You (s, d, k) ); } return 0; }
p.s. 没事多写写注释,挺好。
查看全文
相关阅读:
安装VMware Tools选项显示灰色的正确解决办法
Other UltraISO 软碟通注册码
Linux平台Boost 1.6.7的编译方法
hyper-v显示分辨率如何自动调整
Ubuntu 14.04下超级终端Minicom连接ARM(转)
Ubuntu 17.10安装VirtualBox 5.2.2 及相关问题解决
ffmpeg fails with error "max delay reached. need to consume packet"
Unity Shader 屏幕后效果——边缘检测
C++ STL vector容量(capacity)和大小(size)的区别
Unity影响渲染顺序因素的总结
原文地址:https://www.cnblogs.com/jjtx/p/2533506.html
最新文章
恢复晨读
嵌入式系列
坚持每天写日记
不动笔墨不读书
javascript 私有方法的实现
Namespacing in PHP (php 中使用命名空间)
第一篇博客吧
【转】promise的实现
【转】四种 post 请求格式的XMLHttpRequest 写法
【转】Nginx服务器的反向代理proxy_pass配置方法讲解, 先rewrite 再proxy_pass
热门文章
bin2hex() 函数把 ASCII 字符的字符串转换为十六进制值。字符串可通过使用 pack() 函数再转换回去。
infLuxdb 查询语句加tz(),返回结果的时间可以以指定的时区显示
【转】彻底弄懂UTF-8、Unicode、宽字符、locale
[转]PHP中pack、unpack的详细用法
go-chart 发送图文的统计报表邮件
【转】动态图演示 Promises & Async/Await 的过程
硬件pcb学习
clion 2020 activate code
ubuntu17.10 163源
Ubuntu "Unable to locate package lrzsz"解决办法
Copyright © 2011-2022 走看看