1.输入n个数字。
2.去掉第1个数,把第2个放到这些数字的末尾,
然后是去掉第3个数,把第4个放到这些数字的末尾,
以此类推,直到所有的数字都去掉。
3.去掉的数字按去掉的先后排序,就是加密后的数字 。
注:demo中初始化的数据是我小时候常玩的一个扑克牌小游戏,
就是同一花色的13张扑克牌按demo中的排序方法,
最后就可以按顺序排出来。
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char** argv) {
//初始化数据
vector<int> ves;
ves.push_back(1);
ves.push_back(12);
ves.push_back(2);
ves.push_back(8);
ves.push_back(3);
ves.push_back(11);
ves.push_back(4);
ves.push_back(9);
ves.push_back(5);
ves.push_back(13);
ves.push_back(6);
ves.push_back(10);
ves.push_back(7);
//通过初始数据获取集合长度和初始化数组
int num01=ves.size(),num02[num01];
//开始加密
for(int i=0,num=0;true;i++){
if((i+1)%2==1){
num02[num]=ves[i];
++num;
if(num==num01)
break;
}else{
ves.push_back(ves[i]);
}
}
//遍历加密数组
for(int i=0;i<num01;i++){
cout<<num02[i]<<" ";
}
return 0;
}调试截图

原文地址:http://blog.csdn.net/qingbowen/article/details/46361783