小编Tru*_*wan的帖子

C++/JAVA:在包含给定值的集合中有效地查找集合

假设我们有一组互斥的集
    {A,B,C,D},其中A = {1,2,3},B = {4,5,6},C = {7,8,9},D = {10,11,12}
并且给定值Z,例如3,我期望它返回集合A的索引,因为A具有3作为其成员.

问题是我怎样才能有效地使用C++或JAVA.

我当前的解决方案:将A,B,C,D作为HashSet(或C++中的unordered_set)存储在容器中并循环遍历每个集合,直到找到包含Z的集合.
    问题是存储在容器中的集合量的复杂度为O(n).

有没有办法(或任何数据结构存储这些集合)比O(n)更快地做到这一点?

c++ java optimization set

6
推荐指数
1
解决办法
118
查看次数

圆形正值半到2位小数

通常,舍入到小数点后2位非常容易

printf("%.2lf",<variable>);
Run Code Online (Sandbox Code Playgroud)

但是,舍入系统通常会舍入到最近的偶数.例如,

2.554 -> 2.55
2.555 -> 2.56
2.565 -> 2.56
2.566 -> 2.57
Run Code Online (Sandbox Code Playgroud)

而我想要实现的是

2.555 -> 2.56
2.565 -> 2.57
Run Code Online (Sandbox Code Playgroud)

事实上,四舍五入在C中是可行的,但仅对于整数;

int a = (int)(b+0.5)
Run Code Online (Sandbox Code Playgroud)

所以,我要问的是如何在正值上用2位小数而不是Integer做同样的事情来实现我之前说的打印.

c number-formatting output-formatting

6
推荐指数
1
解决办法
2649
查看次数

标签 统计

c ×1

c++ ×1

java ×1

number-formatting ×1

optimization ×1

output-formatting ×1

set ×1