Algorithm 采访:画形状(圆圈和正方形),直到面积小于X

Algorithm 采访:画形状(圆圈和正方形),直到面积小于X,algorithm,Algorithm,我最近在一次采访中被问到这个问题,但我没能解决。我想把它贴在这里,看看是否有人能给我一些关于如何解决这些问题的想法 问题:给定正X轴和Y轴… 先画一个宽度为a的正方形(比如a=1000) 然后在正方形内画一个半径最大的圆,使圆接触正方形的所有四条边。 然后在此圆内绘制一个正方形,使正方形的所有4个顶点都与圆接触。 继续重复上述过程,交替绘制圆形和方形,直到刚刚绘制的形状面积

我最近在一次采访中被问到这个问题,但我没能解决。我想把它贴在这里,看看是否有人能给我一些关于如何解决这些问题的想法

问题:给定正X轴和Y轴…

  • 先画一个宽度为a的正方形(比如a=1000)
  • 然后在正方形内画一个半径最大的圆,使圆接触正方形的所有四条边。
  • 然后在此圆内绘制一个正方形,使正方形的所有4个顶点都与圆接触。
  • 继续重复上述过程,交替绘制圆形和方形,直到刚刚绘制的形状面积
  • 编写伪代码/逻辑以实现此目的。

    下面是一个示例图,显示了面试官的提问(请原谅这一部分)

    您有两个案例:

  • 给你一个正方形的宽度,圆的面积就是 A=(宽度^2)*π/4

  • 给定一个圆的半径,正方形的面积就是 A=2*(R^2)

  • 在python中:

    R=0
    width=1000
    result=1000000 
    B=10
    square=True
    
    while result > B:
        if square:
            R=width/2
            result=math.pi*(R*R)
        else:
            width=R*math.sqrt(2)
    result=2*R*R
        square = not square
    
    print(result)
    
    您有两个案例:

  • 给你一个正方形的宽度,圆的面积就是 A=(宽度^2)*π/4

  • 给定一个圆的半径,正方形的面积就是 A=2*(R^2)

  • 在python中:

    R=0
    width=1000
    result=1000000 
    B=10
    square=True
    
    while result > B:
        if square:
            R=width/2
            result=math.pi*(R*R)
        else:
            width=R*math.sqrt(2)
    result=2*R*R
        square = not square
    
    print(result)
    

    这是一道相当简单的数学题。基本思想是始终通过知道正方形的边和圆的直径(或半径)来计算曲面。公式如下:

    p=a^2用于正方形

    p=(D^2)/4用于圆,其中D是直径(不是半径)

    第一个正方形的边是
    a
    ,这意味着下一个圆的直径也是
    a
    ,这反过来意味着下一个正方形的对角线是
    a
    。你可以使用毕达哥拉斯定理来计算正方形的边,然后重复这个过程直到你到达一个小于所需的曲面

    我没有写一行代码,因为语言没有指定,我想你可以用我的想法来管理它。在这些面试中,他们通常只是想看看你的思路


    这是一道相当简单的数学题。基本思想是始终通过知道正方形的边和圆的直径(或半径)来计算曲面。公式如下:

    p=a^2用于正方形

    p=(D^2)/4用于圆,其中D是直径(不是半径)

    第一个正方形的边是
    a
    ,这意味着下一个圆的直径也是
    a
    ,这反过来意味着下一个正方形的对角线是
    a
    。你可以使用毕达哥拉斯定理来计算正方形的边,然后重复这个过程直到你到达一个小于所需的曲面

    我没有写一行代码,因为语言没有指定,我想你可以用我的想法来管理它。在这些面试中,他们通常只是想看看你的思路


    这个广场的面积是平方米。圆的面积为π(s/2)^2。下一个s是s/sqrt(2)。为了解决这类问题,你可以很容易地用手去做,我建议你用手去做,并向自己描述你正在采取的步骤。每一个连续正方形的面积减少2倍。因此,首先将第一个正方形的面积除以2,直到面积小于B。然后检查下一个较大的圆是否仍然小于B。圆的面积比相应的内接正方形大PI/2。具体来说,你卡在哪里?也许可以找到新形状的半径或宽度?或者更基本的东西?正方形的面积是s^2。圆的面积为π(s/2)^2。下一个s是s/sqrt(2)。为了解决这类问题,你可以很容易地用手去做,我建议你用手去做,并向自己描述你正在采取的步骤。每一个连续正方形的面积减少2倍。因此,首先将第一个正方形的面积除以2,直到面积小于B。然后检查下一个较大的圆是否仍然小于B。圆的面积比相应的内接正方形大PI/2。具体来说,你卡在哪里?也许可以找到新形状的半径或宽度?还是更基本的?