gpt4 book ai didi

scala - 将一 block 巧克力完全分割需要多少次休息?

转载 作者:行者123 更新时间:2023-12-05 08:52:25 25 4
gpt4 key购买 nike

CodeWars 再次挑战。今天我遇到了这个问题:

“你的任务是将给定尺寸 n x m 的巧克力 block 分成小方 block 。每个方 block 的大小为 1x1 并且牢不可破。实现一个函数,该函数将返回所需的最小中断次数。

例如,如果给你一 block 大小为 2 x 1 的巧克力 block ,你可以一次将其拆分为单个正方形,但对于大小为 3 x 1 的巧克力 block ,你必须拆分两次。

如果输入数据无效,您应该返回 0(因为如果我们没有任何巧克力要分割,则不需要中断)。输入将始终是一个非负整数。”

出于某种原因,无论我提供巧克力棒的哪一面,输出始终为 0。

我已经尝试过的:

object breakChocolate {

var result = 0

def breakChocolate(n: Int, m: Int) = {

var t = n*m
var i =0
def breaking(y:Int): Unit ={
if (t ==0 || t ==1)
result = i
else {
breaking(t%2)
i +=1
}
}
result
}
}

这里是测试:

Test Results: TestCases breakChocolate(5, 5) should return 24 Test Failed

0 was not equal to 24 Stack Trace Completed in 38ms breakChocolate(7, 4) should return 27 Test Failed

0 was not equal to 27 Stack Trace Completed in 1ms Completed in 76ms

最佳答案

要解决此问题,您根本不需要递归。考虑巧克力盘的特殊情况:(1 x n)。要完全分割这个盘子,您需要 (n-1) 次休息。现在你有了 m x n 的盘子。要将它分成 m 份 (1 x n) 的形式,您需要 (m-1) 次休息。所以休息的总数是

(m-1) + m*(n-1) ~ 
m - 1 + m*n - m ~
m*n - 1

关于scala - 将一 block 巧克力完全分割需要多少次休息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56834594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com