如何根据节点数对一组节点进行加权除法
how to do a weighted division on a set of nodes based on a their number
我有很多节点,例如 100 个节点,我想有 10 个父节点,每个节点有 9 个节点。
此代码在开始时运行良好,但当我们获得超过 44 个节点时它会扩展
for (int i = 10; i < 100; i++) {
System.out.println("i : "+i);
int x = new Testing().getSubMastersNumber(i);
System.out.println("sub-Masters number : "+x);
int result = i/x-1;
System.out.println(" remaining nodes: "+ i % x +"\t number of node by SubMaster : "+result);
System.out.println("");
}
public int getSubMastersNumber(int num) {
return (num>1)? 1+getSubMastersNumber(num/2):0;
}
我找到了获取 parent 个节点数的方法
如果数字的小数部分等于 0 那么我们不加 1 parent
示例:sqrt(9) = 3.0
parents = 3 个节点,每个 parent = 2,其余节点 = 0
public static int getSM(int num) {
return ((Math.sqrt(num)-(double)((int) (Math.sqrt(num))))==0) ? (int)Math.sqrt(num) : (int)Math.sqrt(num)+1;
}
节点数parent节点
public static int nodePerSM(int num) {
return (int) ((num - getSM(num))/getSM(num));
}
问题是总是有一些剩余的节点
public static int remainingNodes(int num) {
return (num - getSM(num))-(nodePerSM(num)*getSM(num));
}
我们向每个节点添加 1 个节点 parent
使用循环
示例:节点数 = 14
平方(14)=3.74.....
decimalPart(sqrt(14))= 0.74...
在这种情况下 parent 的数量是 3+1 = 4
每个 parent 的节点数为 14 - 4 = 10
10/4 = 2
剩余节点数为(14-4)-(2*4) = 2
2 parents 将有 3 child 个节点
其他人将有 2
我有很多节点,例如 100 个节点,我想有 10 个父节点,每个节点有 9 个节点。
此代码在开始时运行良好,但当我们获得超过 44 个节点时它会扩展
for (int i = 10; i < 100; i++) {
System.out.println("i : "+i);
int x = new Testing().getSubMastersNumber(i);
System.out.println("sub-Masters number : "+x);
int result = i/x-1;
System.out.println(" remaining nodes: "+ i % x +"\t number of node by SubMaster : "+result);
System.out.println("");
}
public int getSubMastersNumber(int num) {
return (num>1)? 1+getSubMastersNumber(num/2):0;
}
我找到了获取 parent 个节点数的方法
如果数字的小数部分等于 0 那么我们不加 1 parent 示例:sqrt(9) = 3.0
parents = 3 个节点,每个 parent = 2,其余节点 = 0
public static int getSM(int num) {
return ((Math.sqrt(num)-(double)((int) (Math.sqrt(num))))==0) ? (int)Math.sqrt(num) : (int)Math.sqrt(num)+1;
}
节点数parent节点
public static int nodePerSM(int num) {
return (int) ((num - getSM(num))/getSM(num));
}
问题是总是有一些剩余的节点
public static int remainingNodes(int num) {
return (num - getSM(num))-(nodePerSM(num)*getSM(num));
}
我们向每个节点添加 1 个节点 parent 使用循环
示例:节点数 = 14
平方(14)=3.74..... decimalPart(sqrt(14))= 0.74...
在这种情况下 parent 的数量是 3+1 = 4
每个 parent 的节点数为 14 - 4 = 10 10/4 = 2
剩余节点数为(14-4)-(2*4) = 2
2 parents 将有 3 child 个节点 其他人将有 2