我试图解决以下问题:
一张M*N的长方形纸被切成正方形,以便:
这张纸是沿着平行于纸的一边的一条线切割的。
该文件被切割,使得所得维数总是整数。
当纸张不能再切下去时,这个过程就停止了。
切成正方形的纸片的最小数量是多少?
限值:1 <= N <= 100和1 <= M <= 100。
例如:让N=1和M=2,那么答案是2,因为最小的平方数可以被切割为2(纸张沿中间较小的边水平切割)。
我的代码:
cin >> n >> m;
int N = min(n,m);
int M = max(n,m);
int ans = 0
我面临的问题是找到一种算法来优化将一段管道切割成更小、不同长度的管道。例如,您有10米长的标准管道,您需要切割以下部分: 0.7米的4个部分,2.1米的3个部分,5米的7个部分等等。目标是保持切割的最佳顺序,以便将浪费保持在最低限度。
我有一个解决方案,但我不确定它是不是最好的。首先,我创建了一个包含所有长度的堆栈(stack1),按大小排序,较大的值在顶部。我定义了一个空的辅助堆栈,stack2数组管道存储结果。N是管道编号,m是要从该管道剪切的长度。然后我执行以下步骤(这是伪代码):
i=0
j=0
while(stack1 in not empty or stack2 is not em
我正在试着用最少的滴落或浪费来嵌套材料。
Table A
Qty Type Description Length
2 W 16x19 16'
3 W 16x19 12'
5 W 16x19 5'
2 W 5x9 3'
Table B
Type Description StockLength
W 16X19 20'
W 16X19 25'
W 16X19 40'
W 5X9
问题是:
1) I have buckets of fixed size, in my case 64. This cannot change.
2) Values vary in size, but are never bigger than a bucket (64).
3) Access is much slower if any element is split between buckets.
有没有什么算法可以计算存储桶中元素的最优顺序?
这里有两种变化,我对这两种都很感兴趣,以使代码的用户能够在速度和内存使用之间进行选择:
A) Splitting is allowed, but