啊哈算法:解密QQ号

新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的。
所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到
这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾,再将第5个数删除……直到剩下最后一个数,将最后一个数也删除。
按照刚才删除的顺序,把这些删除的数连在一起就是小哈的QQ啦。现在你来帮帮小哼吧。小哈给小哼加密过的一串数是
"6 3 1 7 5 8 9 2 4”。

#include<iostream>
using namespace std;
int arrlist[1000]={6,3,1,7,5,8,9,2,4};
int ans[1000],ansnum=0;
void show(int *arr,int num){//输出数组
    for(int i=0;i<num;i++)
        cout<<arr[i]<<" ";
}
void f(int *arr,int num,int is=1){
    int tarr[1000],tnum=0;
    for(int i=0;i<num;i+=2){
        ans[ansnum++]=arr[i+1-is];
        if(i+1==num){//如果数组长度为奇数,中途退出,并记录
            is=1-is;break;
        }
        tarr[tnum++]=arr[i+is];//切换记录的值的位置
    }
    show(tarr,tnum);cout<<endl;
    if(tnum>1)//如果长度在1以上继续
        f(tarr,tnum,is);
    else if(tnum==1)//当输入数组长度只有1时,直接记录
        ans[ansnum++]=tarr[0];
}
int main(){
    show(arrlist,9);cout<<endl;
    f(arrlist,9);
    cout<<endl;
    show(ans,ansnum);
    cout<<endl;
    return 0;
}


————————————————
版权声明:本文为CSDN博主「LSFAN0213」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LSFAN0213/article/details/81745933

原文地址:https://www.cnblogs.com/forwhat00/p/13213770.html