华为2016研发工程师编程题(1)----删数
来源:互联网 发布:高三励志语录知乎 编辑:程序博客网 时间:2024/04/28 06:37
转载请注明出处<http://blog.csdn.net/qianqin_2014/article/details/51305537>
问题:
有一个数组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<vector>using std::vector;using std::cout;using std::cin;using std::endl;int main(){vector<int> vec;int num;while (cin >> num){//载入数据for (int i = 0; i < num; i++)vec.push_back(i);int i = 0;auto it = vec.begin();//循环依次删除满足条件的数据,直至容器中还剩下最后一个元素while (vec.size() != 1){if ((i + 1) % 3 == 0)it = vec.erase(it);//返回被删除元素的下一个元素的迭代器if ((i + 1) % 3 != 0)it++;i++;if (it == vec.end())//关键所在it = vec.begin();}/*for (auto c : vec)cout << c << endl;*/cout << vec[0] << endl;vector<int>().swap(vec);//别忘了清空容器}return 0;}注意:这种方法存储元素肯定不能用数组,因为数组是固定大小的,无法删除其中的元素来改变大小。
方法二:
待续...
转载请注明出处<http://blog.csdn.net/qianqin_2014/article/details/51305537>
0 0
- 华为2016研发工程师编程题(1)----删数
- 华为2016研发工程师编程题1删数
- 删数--约瑟夫环-- 华为2016研发工程师编程题
- 华为2016研发工程师编程题---删数
- 华为2016研发工程师编程题3数独
- 华为2016研发工程师编程题
- 华为2016研发工程师编程题
- 华为2016研发工程师编程题
- 华为2016研发工程师编程题之删数据
- 华为2016研发工程师编程题(2)----字符集和
- 字符集合---- 华为2016研发工程师编程题
- 字符集合-- 华为2016研发工程师编程题
- 华为2016研发工程师编程题之字符集合
- 华为2016研发工程师编程题2字符集合
- 华为研发工程师编程题(1)----汽水瓶
- 华为研发工程师编程题1汽水瓶
- 华为研发工程师编程题----汽水瓶
- 华为研发工程师编程题3
- PITF(Pairwise Interaction Tensor Factorization)分解
- 为什么都要在主线程中更新UI(iOS开发)
- 用java实现二维数组的“之”字形输出
- 为ios程序设置环境变量
- 在看MATLAB的源码时一定要注意不要把分号看成冒号啊!
- 华为2016研发工程师编程题(1)----删数
- 杂谈(2)
- 验证码生成类
- Android书签整理
- 事件监听中的冒泡流和捕获流有趣现象
- UITableView实现多选
- 练习三 1001
- leetcode 343
- 自定义图片点击效果