所以我有一个任务分配问题,它没有传统的匈牙利方法所要求的成本。
例如:
I have 3 workers - A, B and C
I have 5 jobs - 1, 2, 3, 4 and 5
每个工人都有一个他可以执行的工作列表,如下所示:
worker A can work on job 1, 2, 5
worker B can work on job 1, 2
worker C can work on job 1
最终的结果(因为没有成本)是我能完成的任务的最大数量。在这个例子中,我最多可以完成3次赋值:
worker A on job 5
worker B on job 2
wo
如果有一定数量的节点与边缘连接(如与街道交叉),且每个节点的值为0到3,则边的值为0。
现在我想写一个算法,它将节点的值分配给值边,所以在算法终止后,所有节点的值都是0,而所有的边都是<= 1。
例如,给定此图表:
我想制作这个:
。
我的解决方案:
我已经定义了数据类型-十字路口和Street:
public class Crossing{
int value;
}
public class Street{
int value;
Crossing A, B;
}
该算法迭代交叉路口并将值分配给街道(注意,交叉口只能将其值分配给相邻的街道)。
v
我的老板要求我开发一个简单的Java应用程序来对包含关键字列表的xls文件进行排序。一切都很好,但是对于大型xls文件,我的应用程序需要很长时间才能完成她的工作。我认为我的算法并没有得到真正的优化,但我已经看到jar的执行并没有影响我的计算机的所有性能(Windows 7 Pro 32位老板),实际上它在CPU和回忆录上没有使用任何东西。那么,我的问题是,我如何允许我的程序将他在能力和内存中所需的所有东西运行起来,并像Lamborghini一样对xls进行排序?谢谢!
编辑:这是我的代码,分为两个块:一个主类和一个框架类:
public class Frame extends JFrame i
我理解了基本原理,如果我有一个这样的函数:
int sum(int x, int y, int z) {
int r = x + y + z;
return r;
}
它需要3个参数单位的空间和1个局部变量的空间,并且这永远不会改变,所以这是O(1)。
但是如果我有一个像这样的函数:
void add(int a[], int b[], int c[], int n) {
for (int i = 0; i < n; ++i) {
c[i] = a[i] + b[0]
}
}
这需要N个单位用于a,M个单位用于b,L个单位用于c,1个单位用于i和n
嗨,我正在从.xls表中读取数据,它包含8500行数据,我试图将它存储在double[][]中,但我得到了一个错误
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
码
public static double[][] getData_DoubleArray(String path, int sheetNo, int rowIndex1, int rowIndex2) {
double[][] doubleArray=null;
try {
HSSFShe
这个问题来自于“破解编码采访”一书,我很难理解为解决这些问题而指定的空间复杂性。
问题:给出了一个二叉树,其中每个节点都包含一个值。设计一种算法来打印与给定值相加的所有路径。请注意,路径可以在树中的任何位置启动或结束。
解决方案(用Java):
public static void findSum(TreeNode node, int sum, int[] path, int level) {
if (node == null) {
return;
}
/* Insert current node into path */
path[level