#1682. 珅泽教育CSP-J第一轮模拟考第六套 第 31 题
珅泽教育CSP-J第一轮模拟考第六套 第 31 题
第三题
struct flat_map {
struct {
int key;
int value;
} bucket[65536];
int size = 0;
struct result {
int index;
bool hit;
};
result find(int begin, int end, int key) {
if (begin == end)
return {begin, false};
else {
int mid = begin + (end - begin) / 2;
if (key < bucket[mid].key)
return find(begin, mid, key);
else if (bucket[mid].key < key)
return find(mid+1, end, key);
else
return {mid, true};
}
}
int get(int key) {
result p = find(0, size, key);
if (p.hit)
return bucket[p.index].value;
else
return 0;
}
void put(int key, int value) {
result p = find(0, size, key);
for (int i = size; i > p.index; --i)
bucket[i] = bucket[i - 1];
size++;
bucket[p.index].key = key;
bucket[p.index].value = value;
}
};
判断题
当调用 get(k) 后发现 k 不存在,flat_map 会为 k 分配一块内存并将它对应的值置为 0( )。
{{ select(1) }}
- 正确
- 错误