C# 寻找最佳换行宽度以最大化垂直同值邻域数
我有一个长度为C# 寻找最佳换行宽度以最大化垂直同值邻域数,c#,.net,vb.net,algorithm,graphics,C#,.net,Vb.net,Algorithm,Graphics,我有一个长度为n的位数组。我可以通过在位图上绘制值来生成图像(使用SetPixel方法)。结束图像类似于二维码。现在我把序列包装在sqrt(n),所以我有一个正方形。我想确定最佳折叠/包装值F,对于该值,相同颜色(1像素宽)列的数量(N)及其高度(L)最大化 目前我还不知道如何实现这一点。此算法只是尝试每个可能的折叠值,并确定相同值位的最长运行时间。它的运行时间是最差的,但仍然是多项式。我不知道如何在不进一步限制您的问题的情况下生成更快的算法。 代码未测试 maxlen=0'您可以尝试对序列应
n
的位数组。我可以通过在位图上绘制值来生成图像(使用SetPixel方法)。结束图像类似于二维码。现在我把序列包装在sqrt(n)
,所以我有一个正方形。我想确定最佳折叠/包装值F
,对于该值,相同颜色(1像素宽)列的数量(N
)及其高度(L
)最大化
目前我还不知道如何实现这一点。此算法只是尝试每个可能的折叠值,并确定相同值位的最长运行时间。它的运行时间是最差的,但仍然是多项式。我不知道如何在不进一步限制您的问题的情况下生成更快的算法。
代码未测试
maxlen=0'您可以尝试对序列应用自相关,并找到主要周期(如果存在)。然后使用对应于一些最大峰值的周期作为包装值,并检查最佳结果
这个问题我不清楚。您是否希望最大化相同颜色的两个像素在一起的频率?您是否希望创建最大的相同颜色的矩形?只是尝试所有组合是一个选项,还是n
太大?n是22222我想这需要一段时间,但它可能会更大。。。矩形的想法很酷当你想最大化那些相同颜色的列的数量(N
)和长度(L
)时,你需要决定一个数学方程来最大化。您想最大化N*L
(区域),还是只想最大化N
或L
?您在示例图像中说了“相同颜色”的像素,但只标记了黑色像素。白色像素列也算吗?