假设我们有一组互斥的集
{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)更快地做到这一点?
通常,舍入到小数点后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做同样的事情来实现我之前说的打印.