博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1418:猴子选大王
阅读量:5124 次
发布时间:2019-06-13

本文共 1166 字,大约阅读时间需要 3 分钟。

题目连接(本题目链接失效内容同《围圈报数》):

   围圈报数链接:

  从队列到循环单链表写了一下午都写不出来,网上查了半天题解发现多数用到<vector>而且还用到迭代器(),对于我那群没学过的娃来说比较难理解,还有用牛逼的数学公式推到出来只用20行代码就解决问题,反正我是想不到。晚间在家看孩子时,灵光一现,这个是不是可以用“双向循环链表”就可以克服下午遇到的种种问题,于是迅速花半个小时写出,代码很短,理解“双向循环链表”就很容写出了,加上详细注释,独家出品,如有雷同罚款100,仅供参考。但个人还是觉得这种数学的推理是值得推介的(),一题多解,解后看别人题解,一定是提升算法学习非常有效的学习方法,建议大家多多看看别人的代码。

1 #include
2 using namespace std; 3 struct node{ 4 int pre;//存储之前节点下标 5 int x;//当前可以数得数 6 int nex;//存储之后节点下标 7 }q[1000100];//自定义循环双向链表的数据结构 8 //思考为什么不能用单向循环链表??? 9 int main()10 {11 int n;12 cin>>n;13 for(int i=1; i<=n; i++)//构造循环双向链表 14 {15 cin>>q[i].x;16 if(i==n) q[i].nex=1;17 else q[i].nex=i+1;18 if(i==1) q[i].pre=n;19 else q[i].pre=i-1;20 }21 //for(int i=1; i<=n; i++)cout<
<
<
<
的节点,此时now为
<被删除猴子>
的节点的下标 27 28 q[q[now].pre].nex=q[now].nex;//
<被删除猴子>
之前节点的之后节点更改为
<被删除猴子>
的之后节点 29 q[q[now].nex].pre=q[now].pre;//
<被删除猴子>
之后节点的之前节点更改为
<被删除猴子>
的之前节点 30 31 now=q[now].nex;//更改now为删除猴子的下一个节点重复 32 33 }34 cout<

AC后开心的去睡觉觉~~~

 

转载于:https://www.cnblogs.com/tflsnoi/p/10176795.html

你可能感兴趣的文章
【模板】最小生成树
查看>>
设计模式之结构型模式
查看>>
poj2569
查看>>
使用pygal_maps_world.i18n中数据画各大洲地图
查看>>
sql server必知多种日期函数时间格式转换
查看>>
jQuery EasyUI 的下拉选择combobox后台动态赋值
查看>>
timeline时间轴进度“群英荟萃”
查看>>
python if else elif statement
查看>>
网络编程
查看>>
文本隐藏(图片代替文字)
查看>>
java面试题
查看>>
提高码力专题(未完待续)
查看>>
pair的例子
查看>>
前端框架性能对比
查看>>
uva 387 A Puzzling Problem (回溯)
查看>>
12.2日常
查看>>
同步代码时忽略maven项目 target目录
查看>>
Oracle中包的创建
查看>>
团队开发之个人博客八(4月27)
查看>>
发布功能完成
查看>>