播布客教学视频_C学习笔记_10.2_约瑟夫环问题(数组链表)
来源:互联网 发布:2017淘宝电商品牌排行 编辑:程序博客网 时间:2024/05/16 05:48
/* * *播布客教学视频_C学习笔记_10.2_约瑟夫环问题(数组链表) * author: syt<sytshanli@163.com> *create date: 2014.11.29 * *1.如何跳过无效比较呢? *2.通过数组实现链表管理, *利用一个数组记录每个元素的下一个位置(跳过无效的位置) *1 2 3 4 5 6下标依次为1 2 3 4 5 0 *3.最后调试得到,其实只是需要next数组,与peopel[]有关的都注释掉 * */ #include<stdio.h>#define ALL 6//all people in the ring#define out 3//if counter to 3,than out/* global array for all people in the ring */int people[ALL];/* 记住下一个人的下标*/int next[ALL];/*init ring*/void init_ring(void){int i = 0;//for(i = 0;i < ALL;i++)//people[i] = i +1;for(i = 0;i < ALL;i++)next[i] = (i + 1) % ALL;}/*print ring*/void print_ring(void){int i = 0;//for(i = 0;i < ALL;i++)//printf("%d ",people[i]);printf(" (people)\n");for(i = 0;i < ALL;i++)printf("%d ",next[i]);printf(" (next)\n");}int main(void){int left; //环中有多少人int counter;int i;int prev;printf("demo josphus ring problem\n");init_ring( );print_ring( );left = ALL;//left = all peoplecounter = 0;//counter = 1,2,3i = 0;//代表从0开始prev = ALL - 1;//0的前面一个人应该是5while(left > 1){/*if(????)*///if(people[i] > 0)//如果这个人没走,那么就要计数,一旦出局了,那么赋值0counter++;//报数的加法操作(条件呢??)/*if(????)一定是有人离开了才会有left减少,什么情况下会有人离开呢,*/if(counter == out)//那就是报到m{left--; //什么情况下会少人呢printf("%d is out\n",i + 1);//谁出局了//print_ring( );//每次有人出局就打印环//people[i] = 0;//出局后位置为0/*设置next数组,给它前面的一个人*/next[prev] = next[i];//可能出现bug的地方print_ring( );//每次有人出局就打印环counter = 0;//必须重新计数(bug)}//调试信息//printf("i = %d ,counter = %d ,left = %d\n",i,counter,left);//print_ring( );//if(left < 1)//什么情况下会推出呢?//break;prev = i;i = next[i];//可能数组越界getchar( );//每次回车后才继续}printf("问题解决了!");/*//init ringfor(i = 0;i < ALL;i++)people[i] = i +1;//print ringfor(i = 0;i < ALL;i++)printf("%d ",people[i]);printf("\n");*/return 0;}
0 0
- 播布客教学视频_C学习笔记_10.2_约瑟夫环问题(数组链表)
- 播布客教学视频_C学习笔记_10.1_约瑟夫环问题
- 播布客教学视频_C学习笔记_9.2_整形转字符串(函数实现)
- 播布客教学视频_C学习笔记_8.2_统计1到100中9的个数(函数)
- 播布客教学视频_C学习笔记_9.1_整形转字符串
- 播布客教学视频_C学习笔记_3_计算手指个数
- 播布客教学视频_C学习笔记_4_判断奇偶
- 播布客教学视频_C学习笔记_6_table 9x9
- 播布客教学视频_C学习笔记_8.1_统计1到100中9的个数(分治)
- 播布客教学视频_C学习笔记_5_求1到100的和
- 播布客教学视频_C学习笔记_7_100内最大的素数(97)
- 播布客学习视频_C学习笔记_simple
- 韩顺平 javascript教学视频_学习笔记10_js一维数组_一维数组细节
- [C++学习笔记]链表应用2约瑟夫环问题
- 韩顺平 javascript教学视频_学习笔记11_js二维数组_js冒泡排序_二分查找
- 韩顺平 javascript教学视频_学习笔记4_js运算符2_js移位运算
- 韩顺平 javascript教学视频_学习笔记26_dom对象(window对象2)
- 播布客学习视频_C学习笔记_2_打印输出
- K.Bro Sorting(杭电5122)(2014ACM/ICPC亚洲区北京站)
- 播布客教学视频_C学习笔记_9.2_整形转字符串(函数实现)
- 播布客教学视频_C学习笔记_10.1_约瑟夫环问题
- struts的相关概念
- 解决问题必搜站汇总
- 播布客教学视频_C学习笔记_10.2_约瑟夫环问题(数组链表)
- 【Android开发经验】<Activity>标签下常见属性介绍
- C语言:猜数游戏
- 使用 Docker 构建开发、测试环境
- Oracle那些不常用的SQL
- URLEncoder和URLDecoder
- 分享5个可视化的正则表达式编辑工具
- CMake设置生成vs工程的动态库输出路径
- VC 定时提醒自己休息