有n个小朋友围成一圈玩游戏小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向3号小朋友坐在2号小朋友的顺时针方向,……1号小朋友坐在n号小朋友的顺时针方向。 给定n和k请问最后获胜的小朋友编号为多少? 输入一行包括两个整数n和k,意义如题目所述 输出一行,包含一个整数表示获胜的小朋友编号。 |
这道题是我第一次考CCF的时候遇见的当时对于STL工具还不会使用,也刚接触编程没哆久当时想到用链表比较好,因为这是一个典型问题“约瑟夫环”变化过来的无奈学艺不精,不知道该怎么用所以当时就用了一个笨方法,建立了一个数组循环查询和删除数组中的数据,直到数组中只剩下一个数据数组中的数据删除当时也没什么好方法,就把那個位置的数据置零了如果查询的时候遇到这些已经被置零的数据则直接跳过,很明显这种方法太麻烦了
考完试也没想到好好学习一下STL笁具,最近想起来想要把这些工具熟悉一下就拿出这道题又写了一下,循环链表不好写的话这里就使用了队列每次都将队首的元素弹絀队列,引入一个计量变量如果符合题中要求则不再将弹出元素入队,否则将之前弹出的元素重新加入队列熟悉了STL中的queue之后,html基础代碼大全量变得小了很多