有N个数,非0元素,按原始数字编码,对于0的数字,采用0的个数编码,单0的个数>=16时,第一位0按原始编码,最后一位也按原始编码。
有如下:
0,0,1,0,0,0,0,3,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,9
输出为:
1 2 3 4 5 2 0 15 7 2 9 4
#include<iostream>
#include<vector>
using namespace std;
void show(vector<int> vec) {
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << ' ';
}
}
vector<int> fc(int *A, int N) {
vector<int> vec;
int count1 = 0;
for (int i = 0; i < N;i++) {
if (A[i] == 0) {
count1++;
}
else {
if (count1 < 15) {
vec.push_back(A[i]);
vec.push_back(count1);
count1 = 0;
}
else {
vec.push_back(0);
vec.push_back(15);
vec.push_back(A[i]);
vec.push_back(count1 - 16);
count1 = 0;
}
}
}
return vec;
}
int main() {
int A[] = { 0,0,1,0,0,0,0,3,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,9 };
int N = sizeof(A) / sizeof(int);
vector<int> res;
res = fc(A, N);
show(res);
return 0;
}