题目:有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。


题解一: 暴力解法,模拟,一步一步来。

 #include<bits/stdc++.h>
using namespace std; int main(){
int n; // 长度
while(cin>>n){
if(n>){
n=;
}
vector<int> v(n);
for(int i=;i<n;i++){
v[i]=i;
}
vector<bool> v_b(n,false); if(n==){
return v[];
} int count=; // 删除的count
int idx=-;
while(count!=n-){
int step=;
while(step<){
idx=(idx+)%n;
if(v_b[idx]==false){
step++;
}
}
v_b[idx]=true;
count++;
}
for(;v_b[idx]==true;idx=(idx+)%n){
;
}
cout<<v[idx]<<endl;
}
return ; }

题解二:运用队列的思想进行循环插入和删除。

 #include<queue>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
queue<int> q;
for(int i=;i<n;i++)
{
q.push(i);
}
int count=;
while(q.size()!=)
{
if(count!=)
{
int b=q.front();
q.pop();
q.push(b);
count++;
}
else
{
q.pop();
count=;
}
}
int c=q.front();
cout<<c<<endl;
}
return ;
}

题解三: 约瑟夫环问题(以后再看)

 //递推公式:f[1] = 0 ,f[n] = (f[n - 1] + K) mod n //如果想了解:http://blog.csdn.net/taoyanqi8932/article/details/52335719
#include <iostream>
using namespace std;
int lastNum(int n) {
int res=;
for (int i=;i<=n;i++)
res=(res+)%i;
return res;
}
int main() {
int n;
while (cin>>n)
cout<<lastNum(n)<<endl;
}

每隔n步循环删除,返回最后一个元素的更多相关文章

  1. ArrayList之foreach循环删除倒数第二个元素,不触发fail-fast机制

    今天一朋友问了个问题,对于如下一段代码,运行后会有怎样的结果? public class ArrayListTest { public static void main(String[] args) ...

  2. Java循环删除集合多个元素的正确打开方式

    首先说下不正确的打开方式: 第一:使用for循环删除集合的元素,示例代码如下 ArrayList<String> list = new ArrayList<String>(Ar ...

  3. python循环删除list中的元素

    直接上例子: a = [1,2,3,4,5,6] for i in a: a.remove(i) print(a) 返回:[2, 4, 6] 循环a,想删除a的所有元素,但实际确有数据保留了下来,这是 ...

  4. Python笔记:用for循环删除列表中的元素

    for运行过程中会有一个指针来记录当前循环的元素是哪一个,一开始这个指针指向第0个元素,然后获取它,接着删除第0个元素,这时候,原来是第1个的元素会变成第0个,当指针向后移动一次,指向了现在第1个元素 ...

  5. 集合赋值及for循环删除符合条件的元素

    一.Java语言中ArrayList对象能直接赋值给另一个ArrayList对象吗? https://zhidao.baidu.com/question/399214655.html ArrayLis ...

  6. (CSDN 迁移) JAVA循环删除List的某个元素

    若列表中只可能存在一个则可以用简单的循环删除,不多说. 若列表中可能存在多个,尤其是可能有多个连续的需要删除,用简单循环有可能发生异常. 需要使用迭代器(Iterator),两种具体实现: 逻辑上是一 ...

  7. 循环删除List集合的元素

    之前在使用list集合循环删除元素的时候,竟然出现了集合内的元素不能删除成功的问题,之后整理了一下,发现大有玄机! 1.如果指定了list的size大小,会出现下标越界异常 List<Strin ...

  8. map,vector 等容器内容的循环删除问题(C++)

    map,vector 等容器内容的循环删除问题(C++) map,vector等容器的循环删除不能用普通的方法删除: for(auto p=list.begin();p!=list.end();p++ ...

  9. 如何正确遍历删除List中的元素(普通for循环、增强for循环、迭代器iterator、removeIf+方法引用)

    遍历删除List中符合条件的元素主要有以下几种方法: 普通for循环 增强for循环 foreach 迭代器iterator removeIf 和 方法引用 其中使用普通for循环容易造成遗漏元素的问 ...

随机推荐

  1. 基于 H5与WebGL 的科幻风机 3D 展示

    前言 许多世纪以来,风力机同水力机械一样,作为动力源替代人力.畜力,对生产力的发展发挥过重要作用.近代机电动力的广泛应用以及二十世纪50年代中东油田的发现,使风机发电机的发展缓慢下来. 70年代初期, ...

  2. 浅谈二分—— by hyl天梦

    二分 解决范围 二分法可以用来解决这一系列具有单调性质的题,例如求单调函数的零点 其实在小学奥数中就用到了二分法 例如手动开根号,再比如猜数游戏 二分的具体过程就是先取一个中间值,判定一下正确答案在哪 ...

  3. 使用ClouderaManager管理的HBase的RegionServer无法启动(启动失败)的问题

    问题概述 "新冠期间"远程办公,需要重新搭建一套ClouderaManager(CM)开发环境,一位测试同事发现HBase的RegionServer无法启动,在CM界面上启动总是失 ...

  4. 一个新实验:使用gRPC-Web从浏览器调用.NET gRPC服务

    今天给大家翻译一篇由ASP.NET首席开发工程师James Newton-King前几天发表的一篇博客,文中带来了一个实验性的产品gRPC-Web.大家可以点击文末的讨论帖进行相关反馈.我会在文章末尾 ...

  5. Flink与HanLP集成使用

    自然语言处理是机器学习的一个重要分支,在智能翻译.智能问答.舆情监控.ChatOps等都有很好的应用场景,目前比较好的一个开源实现工具是何晗大神的HanLP,主页(http://hanlp.com/) ...

  6. 业余无线电A类考试准备笔记

    在线模拟自测地址:https://liunan.github.io/crac/ 共361题,到LK0074 1004/2890行 Key Word: 要合法 要服从管理 Note: 无线电管理 最高法 ...

  7. Update、Insert注入技巧

    title: Update.Insert注入技巧 date: 2017-10-23 18:07:57 tags: ["注入"] 审计了不少代码,再看代码的时候最多出现的就是注入,很 ...

  8. ASP.NET Core MVC 中实现中英文切换

    哈喽..大家好 很久没有更新了,今天就来一篇最近开发用到的功能,那就是中英文切换,这个实际上也不是高大上,先说一下原理,在.NET Core框架中给我们提供了全球化的类,叫做Localization, ...

  9. Cacti 抓取数据方式 安装spine

    安装好cacti后首先要设置获取数据的方式 Cacti 获取数据的方式有两种,1.监控端的脚本(可以是php, shell, perl 或其他脚本)2.或者 snmp 协议获取. Cacti 会在固定 ...

  10. 管理 使用 FastDFS

    启动管理tracker: 1. 启动文件+配置文件+命令 /usr/bin/fdfs_trackerd <config_file> [start | stop | restart] 举例: ...