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. 没事多写写注释,挺好。
查看全文
相关阅读:
使用较大的 JavaScript 函数
js代码,执行简单的按钮翻转
GUID!!!!
日期可以直接比较,但从页面取来的日期要用单引号括起来!
statement
关于switch
关于Confirm
JS代码,将终端用户(Web 页面的查看者)的计算机时间置于一个按钮 Web 服务器控件上
测试时应该注意的
如果你觉得现在的生活并不好,说明你的努力还不够
原文地址:https://www.cnblogs.com/jjtx/p/2533506.html
最新文章
【JAVA】压缩文件以及解压缩
VS2008中开发智能设备程序的一些总结收藏(转)
优秀C#程序员必须要知道的
常用方法(系统表操作)
如何删除server2000、2005日志文件
sql select 如何定义自增列?
WinCE开发也不难
数据表行列转换
.net经典面试题
SQL Server日期计算
热门文章
remoting最简单的理解
为帮助内容存储区指定的位置无效或者您无权访问该位置
安装SQL 2008 重启之后 一再提示重启计算机问题
DropDownList比较好的设置值的方式
如何禁止datagridview列顺序自动改变位置
Access 查询所有用户表名
javascript 页面跳转总结
未能加载文件或程序集“xxx”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集
使用较大的 JavaScript 函数(3)Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptBlock 之间的区别
ClientScript
Copyright © 2011-2022 走看看