小编Abh*_*sal的帖子

奇怪但实用的2D箱包装优化

样本次优输出

我正在尝试编写一个为分区Panel生成绘图的应用程序.

我有N个小隔间(2D矩形)(N <= 40).对于每个隔间,存在最小高度(minHeight [i])和最小宽度(minWidth [i]).面板本身也有一个MAXIMUM_HEIGHT约束.

这些N小室必须以列方式网格排列,以便满足每个小隔间的上述限制.

此外,每列的宽度由该列中每个隔间的最大minWidth决定.

此外,每列的高度应相同.这决定了面板的高度

我们可以在任何列的左侧空白处添加备用隔间,或者我们可以将任何隔间的高度/宽度增加到指定的最小值以外.但是我们不能旋转任何小隔间.

OBJECTIVE: TO MINIMIZE TOTAL PANEL WIDTH.
Run Code Online (Sandbox Code Playgroud)

目前我只是通过忽略优化中的小隔间宽度来实现它.我只选择具有最大minHeight的隔间并尝试将其放入我的面板中.但是,它并不保证最佳解决方案.

我能比这更好吗?

编辑1:面板的MAXIMUM_HEIGHT = 2100mm,最小宽度范围(350mm至800mm),最小高度范围(225mm至2100mm)

编辑2:问题目标:最小化面板宽度(不是面板区域).

algorithm math optimization knapsack-problem

12
推荐指数
1
解决办法
2331
查看次数

创建Numpy图像数组

我有一些(950)150x150x3 .jpg图像文件,我想读入Numpy数组.

以下是我的代码:

X_data = []
files = glob.glob ("*.jpg")
for myFile in files:
    image = cv2.imread (myFile)
    X_data.append (image)

print('X_data shape:', np.array(X_data).shape)
Run Code Online (Sandbox Code Playgroud)

输出是(950, 150).请让我知道为什么列表没有np.array正确转换,以及是否有更好的方法来创建图像数组.

在我读过的内容中,通过python列表更容易完成追加numpy数组,然后将它们转换为数组.

编辑:一些更多信息(如果它有帮助),正确image.shape返回(150,150,3).

python opencv numpy image image-processing

11
推荐指数
2
解决办法
4万
查看次数

固定大小设置为包含给定集的最大数量

我有大约1000套大小<= 5,包含数字1到100.

{1}, {4}, {1,3}, {3,5,6}, {4,5,6,7}, {5,25,42,67,100} ... 
Run Code Online (Sandbox Code Playgroud)

是否有可能找到一组包含最大给定集数量的20?

检查每个100!/(80!*20!)集合是低效的.

algorithm set

7
推荐指数
1
解决办法
309
查看次数

范围内的最低值

我想在某个范围内找到最低值.
我每次都要迭代数组还是有动态方法?

可以说我有输入数组:

index: 0 1 2 3 4 5 6 7
value: 1 4 6 1 6 7 2 3
Run Code Online (Sandbox Code Playgroud)

然后我必须选择<a,b>(包括)范围内的最小值.例如:

min(0,7) = 1
min(0,2) = 1
min(4,6) = 2
min(1,2) = 4
Run Code Online (Sandbox Code Playgroud)

我对最快的解决方案感兴趣,最好是在恒定的时间内获得结果.

在此期间不会更改数组.

c++ arrays algorithm minimum

6
推荐指数
1
解决办法
1002
查看次数

在小于O(n)比较中找到3个最小元素的时间复杂度

关于确定2种算法的时间复杂度,我有2个问题.

问题1

使用比较确定一组n个 不同数字中的最小3个数字.

  1. 可以使用O(log 2 n)比较来确定这3个元素.
  2. O(log 2 n)不够,但可以使用n + O(1)比较来确定它们.
  3. n + O(1)是不够的,但是可以使用n + O(logn)比较来确定它们.
  4. n + O(logn)不够,但可以使用O(n)比较来确定它们.
  5. 以上都不是.

在这里,我想它的方式是采取3个变量(如:MIN 1,MIN 2和MIN 3,其中MIN 1是最小和最小值,3是最大的,这些3),与1个初始化它们ST的3个要素列表并扫描列表一次.对于列表中的每个数字x,我们有以下4种情况:

  1. 如果 x <最小1 那么,最小3 =最小2 ; 最小2 =最小1 ; 最小1 = x;
  2. 否则如果 Min 1 <x <Min 2 Min 3 = Min 2 ; 最小 …

algorithm big-o time-complexity

5
推荐指数
1
解决办法
463
查看次数

Qt可编辑QGraphicsTextItem验证文本并在更改时发出信号

我真的很想完成与Qt GraphicsView相关的任务.任何帮助或建议将受到高度赞赏.在我的QGraphicsView应用程序中,我有一些可编辑的QGraphicsTextItems,我已添加到场景中.我需要以下功能:

  • 为float设置验证器,以便用户不会错误地在该文本项中输入字符或换行符.
  • 用户更改文本后发出信号.

任何人都可以建议我如何在我的应用程序中实现这一点?我尝试过很努力,但我找不到合适的东西.如果有任何替代或解决方法,我将很高兴知道.

谢谢!

validation qt signals qgraphicsview qgraphicstextitem

4
推荐指数
1
解决办法
1661
查看次数

使用CMake和MinGW构建PoDoFo库

我正在尝试PoDoFo Library在我的Windows平台上构建(用作API).它是使用完成的CMake.该ReadMe文件说明如下.不幸的是,我是CMake的新手,我无法从中得到很多.

在Windows上构建PoDoFo

Windows需要CMake 2.6.x. 您可以从cmake.org下载它.

在Windows上,PoDoFo可以构建为共享库或静态库.不支持构建它们.默认情况下,仅构建共享库.如果你想要一个静态库,只需用cmake的额外参数禁用共享库的生成:

    -DPODOFO_BUILD_SHARED=FALSE
Run Code Online (Sandbox Code Playgroud)

在win32上处理库命名

特别是在Windows上,自定义构建库的名称与您可能作为预构建副本下载的名称不同也很常见.除非你说出来,否则如果被称为其他东西,CMake将无法找到它们.使用这些变量告诉CMake在以下位置查找库的名称:

•FREETYPE_LIBRARY_NAMES_DEBUG, FREETYPE_LIBRARY_NAMES_RELEASE and FREETYPE_LIBRARY_NAMES
•TIFF_LIBRARY_NAMES_DEBUG, TIFF_LIBRARY_NAMES_RELEASE and TIFF_LIBRARY_NAMES 
•LIBJPEG_LIBRARY_NAMES_DEBUG, LIBJPEG_LIBRARY_NAMES_RELEASE and LIBJPEG_LIBRARY_NAMES
•ZLIB_LIBRARY_NAMES_DEBUG, ZLIB_LIBRARY_NAMES_RELEASE,ZLIB_LIBRARY_NAMES
Run Code Online (Sandbox Code Playgroud)

CMake使用MinGW构建在Windows上

设置MinGW后,确保MinGW"bin"目录在PATH上,并确保设置CMAKE_INCLUDE_PATH和CMAKE_LIBRARY_PATH,以便CMake可以找到PoDoFo所需库的头文件和.lib文件.来自http://gnuwin32.sf.net/的GnuWin32库包 已知可以与PoDoFo一起使用,因此从那里安装zlib,freetype和libjpeg应该可以解决问题.

要使用默认的GnuWin32安装配置和构建PoDoFo,并在PATH上使用MinGW:

md ..\podofo-debug 
cd ..\podofo-debug
cmake -G "MinGW Makefiles" ..\podofo-src -DCMAKE_INCLUDE_PATH=c:\progra~1\gnuwin32\include -DCMAKE_LIBRARY_PATH=c:\progra~1\gnuwin32\lib -DPODOFO_BUILD_SHARED:BOOL=FALSE mingw32-make
Run Code Online (Sandbox Code Playgroud)

我已经安装CMake并下载了提到的其他库freetype, zlib, libjpeg.它们的头文件和二进制文件位于各自的文件夹中.

现在又该DCMAKE_INCLUDE_PATHDCMAKE_LIBRARY_PATH呢?还有什么"MinGW Makefiles"?我必须提供任何额外的参数吗?

如果有人能够通过简单的步骤解释我如何解决这个问题,我将不胜感激.

编辑:执行CMAKE时出错:

-- Ensure you cppunit installed version is at least 1.12.0
Cppunit not …
Run Code Online (Sandbox Code Playgroud)

c++ mingw build cmake podofo

3
推荐指数
2
解决办法
5024
查看次数

Tarjan 算法:时间复杂度和轻微修改的可能性

这个问题与最近在这里提出的问题有关但又不同。

我刚刚阅读了维基百科伪代码

algorithm tarjan is
  input: graph G = (V, E)
  output: set of strongly connected components (sets of vertices)

  index := 0
  S := empty
  for each v in V do
    if (v.index is undefined) then
      strongconnect(v)
    end if
  end for

  function strongconnect(v)
    // Set the depth index for v to the smallest unused index
    v.index := index
    v.lowlink := index
    index := index + 1
    S.push(v)

    // Consider successors of v
    for each (v, …
Run Code Online (Sandbox Code Playgroud)

algorithm graph pseudocode tarjans-algorithm

2
推荐指数
1
解决办法
1102
查看次数

带有if条件的vector :: size()的奇怪行为

我有以下代码片段:

cout << indexCoveredA[a.size()-1] << " "<< b.size()-1 << endl;
if (indexCoveredA[a.size()-1] < (b.size() - 1) ) {
  cout << "entered";
}
Run Code Online (Sandbox Code Playgroud)

其中a,b,indexCoveredAindexCoveredBstd::vector<int>.

当我运行此代码时,控制台打印:

-1 4
Run Code Online (Sandbox Code Playgroud)

这意味着在if条件下,LHS小于RHS.但是,不打印"输入",这意味着if条件被评估为false.

现在,如果我将条件更改为(indexCoveredA[a.size()-1] + 1 < b.size() ),则在控制台中打印"已输入".

我已经尝试过使用MSVC和minGW编译器.我无法理解为什么会这样.

有人可以解释一下吗?

谢谢.

c++

-1
推荐指数
1
解决办法
128
查看次数