问答题目
问题1 molloc和new的区别
http://blog.jobbole.com/102002/
问题2 浅拷贝和深拷贝
问题3 野指针是如何产生的?
问题4 讲述一下virtual
问题5 C++中什么类型的成员变量只能在构造函数的初始化列表中进行
问题6Static的作用?
问题7宏和枚举的区别?
问题8程序的编译执行过程?
问题9堆和栈的区别?
问题10struct和typedef struct的区别?
问题11Struct和Class的区别?
问题12 简述回调函数
问题13Linux中进程分类?
问题14 简述回调函数
问题15位图格式?
算法题目
题目1 求最大公约数和最小公倍数
题目2 斐波那契数列
题目3 快速排序
题目4 堆排序
题目5 归并排序
题目6 插入排序
题目8 平衡二叉树
题目9 广度优先搜索( BFS )
题目10 深度优先搜索(DFS)
编程题目
题目1 操作序列(2017网易)
小明有一个长度为n的整数序列a_1,...,a_n,然后考虑在一个空序列b上进行n次以下操作:
1 将a_i放入b序列的末尾
2 逆置b序列
小明需要你计算出操作n次之后的b序列
输入描述
输入包括两行,第一行包括一个整数n(2≤n≤ 2*10 ^ 5),即序列的长度。第二行包括n个整数a_i(1≤n≤ 10 ^ 9),即序列a中的每个整数,以空格分割。
输出描述
在一行中输出操作n次之后的b序列,以空格分割,行末无空格
示例1
4
1 2 3 4
输出
4 2 1 3
参考
参考
//别被迷惑了,其实不需要逆序,直接从后向前间隔一个输出,然后没有输出的顺序输出即可
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
long long n;
while (cin >> n)
{
vector<int> array(n);
for (long long i = 0; i < n; ++i)
cin >> array[i];
if (n == 1)//只有一个的话直接输出就行,感谢"...石头..."的纠正.
{
cout << array[0] << endl;
return 0;
}
if (n % 2 == 0)//我这里区分了一下奇数和偶数,更好处理
{
for (long long i = n - 1; i >= 0; i -= 2)
{
cout << array[i] << " ";
}
cout << array[0];
for (long long i = 2; i < n - 1; i += 2)
cout << " " << array[i];
}
else
{
for (long long i = n - 1; i >= 0; i -= 2)
{
cout << array[i] << " ";
}
cout << array[1];
for (long long i = 3; i < n - 1; i += 2)
cout << " " << array[i];
}
cout << endl;
}
return 0;
}