我有一个连接的形状,由放在一起的正方形组成,例如,取一个方形纸,沿着现有的线条绘制一条线,该线条在其开始处结束并且不会交叉.
现在的目标是找到一个算法(而不是强力),用尽可能少的非重叠矩形填充这个形状.
我正在寻找最佳解决方案.从图像中可以看出,天真贪婪的方法(采取最大的矩形)不起作用.
(最佳)
(贪婪)
我的场景是顶点缩减,但我确信还有其他用例.
注意:此问题似乎很基本,但我无法在其他地方找到解决方案.还有,这个问题NP难吗?
编辑:我刚刚意识到,在我的场景中,用尽可能少的非重叠三角形填充形状会产生更好的结果.
交换两个数字
C++:
int a = 3;
int b = 5;
a^=b^=a^=b;
printf("%d, %d\n", a, b); //5, 3
Run Code Online (Sandbox Code Playgroud)
PHP:
$a = 3; $b = 5;
$a^=$b^=$a^=$b;
echo "$a, $b\n"; //5, 3
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
> a=3;b=5;a^=b^=a^=b;[a,b]
[ 0, 3 ]
Run Code Online (Sandbox Code Playgroud)
为什么?看起来在所有表达式执行之前初始化所有变量...