我有一个n x m由非负整数组成的矩阵.例如:
2 3 4 7 1
1 5 2 6 2
4 3 4 2 1
2 1 2 4 1
3 1 3 4 1
2 1 4 3 2
6 9 1 6 4
Run Code Online (Sandbox Code Playgroud)
"掉落炸弹"会使目标小区的数量和其所有八个邻居的数量减少一个,最小为零.
x x x
x X x
x x x
Run Code Online (Sandbox Code Playgroud)
什么算法可以确定将所有单元减少到零所需的最小炸弹数量?
B选项(由于我不是一个细心的读者)
实际上问题的第一个版本并不是我想要回答的问题.我没有仔细阅读整个任务,还有其他限制,让我们说:
当行中的序列必须不增加时,简单问题怎么办:
8 7 6 6 5 是可能的输入序列
7 8 5 5 2 因为7 - > 8在序列中生长是不可能的.
也许找到"更容易"的案例的答案将有助于找到更难的解决方案.
PS:我相信当我们有几个相同的情况需要最少的炸弹来清除上线时,我们选择在该行的"左侧"使用大多数炸弹的一个.还有什么证据可能是正确的吗?
假设我们将考虑具有长度2n且n可能是大约的二进制数1000.我们正在寻找具有以下特性的kth数字(k受限制10^9):
1's等于0's可以描述如下的金额:#(1) = #(0)0's的1's.在否定句子后可能更容易理解它,即:没有包含1's多于的前缀0's.基本上就是这样.所以为了说清楚,让我们做一些例子:
n=2,k=2
我们必须采用二进制数量的长度2n:
0000
0001
0010
0011
0100
0101
0110
0111
1000
and so on...
Run Code Online (Sandbox Code Playgroud)
现在我们必须找到2nd满足这两个要求的数字.所以我们看到的0011是第一个,0101也是第二个.如果我们改变k=3,则答案不存在,因为存在具有相同数量的相反位的数字,但是因为0110存在前缀,011所以数字不满足第二约束,并且对于具有1最高有效位的所有数字也是如此.
那么我到目前为止所做的算法呢?
好吧,我的第一个想法是生成所有可能的位设置,并检查它是否具有这两个属性,但生成它们都将采用O(2^(2n))哪个不是一个选项n=1000.
另外我意识到没有必要检查所有小于0011for n=2,000111for n=3等的数字......坦率地说,那些最重要位的一半仍保持"未被触及",因为这些数字不可能满足#(1) = #(0) …
如何设置有人可以创建的线程数限制?我所做的是运行某人的代码(类似于ideone),并希望限制他可以生成的线程数.怎么办?一些jvm设置或其他什么?
编辑我添加更多指定的信息,因为有些人没有得到我的观点.
我知道有很多类似的话题.但是他们中的大多数人在我的案例中给我留下了一些疑问.我想要做的是找到完美匹配(或者尽可能接近完美匹配当然没有完美匹配)然后从所有匹配中找到你能够匹配n个顶点中的k(其中k是最高的) ),我想选择尽可能高的总重量.所以简单地说我所说的是优先考虑的事情:
我听说过Ford-Fulkerson算法.它是以我描述的方式工作还是我需要其他算法?
我正在使用open-jpa,因为我们知道它随增强器一起提供,可以在增强期间创建非私有的无参数构造函数.它有效,但是日食有问题.它非常合理,它不知道在ant构建期间会发生什么,所以是否有可能关闭这个The Java class for mapped type ... must define a non-private zero-argument constructor与@Entity注释绑定的特定错误?
我有一个基数为10的数字,大约有10k位数.我想将它转换为base 2(1010101001 ...).我能想到的只是原始算法:
take last digit mod 2 -> write down bit
number divide by 2;
在字符串上实现小学部门应该不难,但我认为它效率很低.如果我是对的将是O(l^2),这里l指基10号的长度可以在更快地执行?
我的输入是三个数字 - 一个数字s以及一个范围的开头b和结尾.任务是找到范围内的最小Levenstein距离和范围内的所有数字.没有必要找到最小化距离的数字,最小距离就足够了.e0 <= s,b,e <= 10^1000s[b, e]
显然我必须将数字作为字符串读取,因为标准C++类型不会处理如此大的数字.计算可能在很大范围内的每个数字的Levenstein距离是不可行的.
有任何想法吗?
是否可以在O(n)上对多集执行第k个元素的搜索(值可以重复)?
因为据我了解的快速选择的想法,我必须使用一些支点来划分输入。然后,我有2个数组,我选择进行递归搜索取决于我要搜索的索引元素+两个数组的大小分别是多少:
1 7 8 5 3 2 4
假设数据透视为4,我正在搜索第二大元素。所以分区后我可能会得到像
1 3 2 4 7 8 5
因为正确的子数组由3个元素组成,如果我是正确的话,我仍然会尝试在正确的数组中找到第二大的数组?
但是,如果我以8为支点,我可能会得到类似
1 3 2 7 5 4 8
因此,我将尝试在左侧表格中找到最大的元素(适当地通过线性查找,但一般而言,我将采用左侧子数组并搜索元素-(|右侧子数组大小| + 1))
但是多集呢?假设我有数组:
4 5 6 7 7 7 4 3 2 1
我的枢纽是6搜索第三大元素,分区后我收到:
4 5 3 2 4 1 6 7 7 7
因此,如果我使用上面介绍的方法,我将尝试在右子数组上执行递归,而显而易见的第三大值是5,它在左边?
我想出的唯一解决方案是使用某些数据结构(例如BST,Set等)来过滤O(nlogn)重复项。然后使用O(n)快速选择。但是总的来说,它会给我非线性方法,这可以线性吗?
我还有一个额外的问题,如果无法完成分配内存该怎么办?我所能做的就是只使用局部整数+堆栈递归。这个问题可以在O(n)中解决吗?因为O(nlogn)可以通过排序+线性“通过计数”来完成。
我正在努力运行任何使Eclipse IDE更加“黑暗”的插件。我都测试了:
但是问题是在肉桂按钮下背景不会改变。但是例如选项卡式窗格中的选项卡确实可以。这里有屏幕截图

任何想法如何解决?
除了@groovy.transform.TypeChecked在课前放置之外,还有什么方法可以进行 Groovy 静态类型安全检查?它有效,但我发现将它放在那里的每个班级真的很痛苦。我也是从Eclipse中找到的,context menu (on package tree view) -> Groovy Type Checking -> Type check但是选择了之后好像没有任何效果。
我想有一些选择:
所以坦率地说,它应该像在 Java 中一样工作。