一种编码方法,附解码程序
2009-09-30 21:16
141 查看
面试时遇到的一道题目,编码与解码后数据如下:
38 1 21 2 31 3 22 4 36 5 23 6 32 7 24 8 40 9 25 10 33 11 26 12 37 13 27 14 34 15 28 16 39 17 29 18 35 19 30 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
请按任意键继续. . .
38 1 21 2 31 3 22 4 36 5 23 6 32 7 24 8 40 9 25 10 33 11 26 12 37 13 27 14 34 15 28 16 39 17 29 18 35 19 30 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
请按任意键继续. . .
#include <cstdlib> #include <iostream> #include <vector> #define MaxNum 40 using namespace std; void Encode(int*Coded); void Decode(int*Coded,int *Decoded); int main(int argc, char *argv[]) { int Coded[MaxNum]={0}; int decoded[MaxNum]={0}; Encode(Coded); for(int i=0;i<MaxNum;i++) { cout<<Coded[i] <<" "; } cout<<endl; Decode(Coded,decoded); for(i=0;i<MaxNum;i++) { cout<<decoded[i] <<" "; } cout<<endl; system("PAUSE"); return EXIT_SUCCESS; } void Encode(int*Coded) { vector<int> v; for(int i=0;i<MaxNum;i++) { v.push_back(i); } int front; int num=1; while(!v.empty()) { front=v.front(); v.erase(v.begin()); v.push_back(front); if(!v.empty()) { Coded[v.front()]=num; v.erase(v.begin()); num++; } } } void Decode(int*Coded,int* Decoded) { vector<int> v; for(int i=0;i<MaxNum;i++) { v.push_back(Coded[i]); } int front; int index=0; while(!v.empty()) { front=v.front(); v.erase(v.begin()); v.push_back(front); if(!v.empty()) { Decoded[index]=v.front(); index++; v.erase(v.begin()); } } cout<<endl; }
相关文章推荐
- Windows服务程序的一种简捷实现方法
- Ubuntu QT下加载程序时提示“system”编码解码无法编辑的解决
- 7-1通信系统中为什么要进行编码和解码?常见的编码方法有哪些?
- 7-1通信系统中为什么要进行编码和解码?常见的编码方法有哪些?
- SQL安装时出错,提示:安装程序配置服务器失败 参考服务器错误日志。针对其中一种情况的解决方法!
- VS2005 WinForm程序TextBox变成下划线的一种实现方法
- Android结束Activity退出程序的一种有效方法
- 一种基于ARM-Linux的FPGA程序加载方法
- 在嵌入式系统中开启一种后台服务程序的简便方法
- GetModuleFileNameEx遍历获取64bit程序路径失败的一种解决方法(Win7-64-bit)
- 程序中一种用in的sql防注入的方法(小技巧)
- ASP对base64编码解码程序
- 最简单方法解决RCP程序UTF-8编码问题
- MFC 程序内部保存数据的一种方法
- 一种基于ARM-Linux的FPGA程序加载方法
- C#一种变通的程序与窗口使用同一图标资源的方法
- 一种用C语言实现的打印程序源码的方法
- 讨论:一种基于状态位图的SPIHT改进算法(2)——编解码程序
- 内核驱动程序中获取当前用户进程的进程名的一种方法
- 64位windows上用mingw编译32位程序的一种方法