码迷,mamicode.com
首页 > 其他好文 > 详细

华为机试题

时间:2016-08-07 17:03:10      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

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

输入描述:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如100,则对a[999]进行计算。


输出描述:
一行输出最后一个被删掉的数的原始下标位置。

输入例子:
8

输出例子:
6
#include<iostream>
#include<list>
using namespace std;
int main()
{
    int M=2;
    int N;
    while(cin>>N)
    {
        list<int> lst;
        for(int i=0;i<N;i++)
        {
            lst.push_back(i);
        }
        list<int>::iterator iter=lst.begin();
        while(lst.size()>1)
        {
            if(iter==lst.end())
                iter=lst.begin();
            for(int i=0;i<M;i++)
            {
                iter++;
                if(iter==lst.end())
                    iter=lst.begin();
                
            }
           /* list<int>::iterator next=iter++;
            if(next==lst.end())
                next=lst.begin();
            iter--;*/
            iter=lst.erase(iter);
           
 
        }
        cout<<lst.front()<<endl;
    }
    return 0;
}

 

华为机试题

标签:

原文地址:http://www.cnblogs.com/qiaozhoulin/p/5746497.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!