|
|
|
@ -54,9 +54,13 @@ struct Node {
|
|
|
|
|
return cnt > b.cnt;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
vector<Node> vec;//需要把bucket组装成Node放到数组p中,才能使用结构体排序吧
|
|
|
|
|
vector<Node> vec;//需要把b组装成Node放到数组p中,才能使用结构体排序吧
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
//将测试用例引入
|
|
|
|
|
freopen("D://HuiJie.txt", "r", stdin);
|
|
|
|
|
//freopen("D://test.txt", "w",stdout);
|
|
|
|
|
|
|
|
|
|
int n;
|
|
|
|
|
cin >> n;//有n行数据组成了图像
|
|
|
|
|
for (int i = 1; i <= n; i++) {
|
|
|
|
@ -81,24 +85,30 @@ int main() {
|
|
|
|
|
//使用自定义排序方法排序
|
|
|
|
|
sort(vec.begin(), vec.end());
|
|
|
|
|
|
|
|
|
|
//第一问
|
|
|
|
|
for (int i = 0; i < min(16, (int)vec.size()); i++)
|
|
|
|
|
cout << toHex(vec[i].id);
|
|
|
|
|
cout << endl;
|
|
|
|
|
|
|
|
|
|
//第二问
|
|
|
|
|
for (int i = 0; i < n; i++) { //枚举每个原始字符串,每2个一组,判断这个小串应该与尺子数组中的哪一个更接近
|
|
|
|
|
for (int j = 0; j < q[0].size(); j += 2) {
|
|
|
|
|
for (int j = 0; j < q[0].size(); j += 2) {//长度是一样长的
|
|
|
|
|
char c1 = q[i][j], c2 = q[i][j + 1];
|
|
|
|
|
//计算ab组装出的短串与上面vec中的前16个哪个距离最短
|
|
|
|
|
int x = toDec(c1, c2);
|
|
|
|
|
int mi = INT_MAX;
|
|
|
|
|
int mi_p = 0;
|
|
|
|
|
for (int k = 0; k < min(16, vec.size()); k++) { //16是有风险的,因为可能没有16个那么多
|
|
|
|
|
if (mi > abs(vec[k] - x)) {
|
|
|
|
|
mi = abs(vec[k] - x);
|
|
|
|
|
for (int k = 0; k < min(16, (int)vec.size()); k++) { //16是有风险的,因为可能没有16个那么多
|
|
|
|
|
if (mi > abs(vec[k].id - x)) {
|
|
|
|
|
mi = abs(vec[k].id - x);
|
|
|
|
|
mi_p = k;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//mi_p [0,255] -> 十六进制
|
|
|
|
|
//将当前的a,b这个值修改为mi_p这个灰阶值
|
|
|
|
|
cout << toHex(mi_p);
|
|
|
|
|
cout << toHex(mi_p)[1];
|
|
|
|
|
}
|
|
|
|
|
cout << endl;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|