给定一块正方形和可用的切割总数 n,找出用 n 次切割可以获得的相同尺寸的矩形或正方形的最大数量。允许的切割是水平切割和垂直切割。
注意:不允许堆叠和折叠。
例子:
Input : n = 1
Output : 2
Explanation :
Input : n = 2
Output : 4
Explanation :
Input : n = 3
Output : 6
Explanation :
给定的是 n,它是允许的切割次数。由于需要在 n 次切割后最大化片数,所以水平切割的数量将等于垂直切割的数量。这可以使用微分来证明。所以水平切割的数量将是 n/2。和垂直切割将是 nn/2。
所以件数=(水平切割+1)*(垂直切割+1)。
程序:
C++
// C++ program to find maximum no of pieces
// by given number of cuts
#include
using namespace std;
// Function for finding maximum pieces
// with n cuts.
int findMaximumPieces(int n)
{
// to maximize number of pieces
// x is the horizontal cuts
int x = n / 2;
// Now (x) is the horizontal cuts
// and (n-x) is vertical cuts, then
// maximum number of pieces = (x+1)*(n-x+1)
return ((x + 1) * (n - x + 1));
}
// Driver code
int main()
{
// Taking the maximum number of cuts allowed as 3
int n = 3;
// Finding and printing the max number of pieces
cout << "Max number of pieces for n = " << n
<< " is " << findMaximumPieces(3);
return 0;
}
Java
// Java program to find maximum
// no of pieces by given number
// of cuts
import java.util.*;
class GFG
{
// Function for finding maximum
// pieces with n cuts.
public static int findMaximumPieces(int n)
{
// to maximize number of pieces
// x is the horizontal cuts
int x = n / 2;
// Now (x) is the horizontal cuts
// and (n-x) is vertical cuts, then
// maximum number of pieces = (x+1)*(n-x+1)
return ((x + 1) * (n - x + 1));
}
// Driver code
public static void main (String[] args)
{
// Taking the maximum number
// of cuts allowed as 3
int n = 3;
// Finding and printing the
// max number of pieces
System.out.print("Max number of pieces for n = " +
n + " is " + findMaximumPieces(3));
}
}
// This code is contributed by Kirti_Mangal
Python 3
# Python 3 program to find maximum no of pieces
# by given number of cuts
# Function for finding maximum pieces
# with n cuts.
def findMaximumPieces(n):
# to maximize number of pieces
# x is the horizontal cuts
x = n // 2
# Now (x) is the horizontal cuts
# and (n-x) is vertical cuts, then
# maximum number of pieces = (x+1)*(n-x+1)
return ((x + 1) * (n - x + 1))
# Driver code
if __name__ == "__main__":
#Taking the maximum number of cuts allowed as 3
n = 3
# Finding and printing the max number of pieces
print("Max number of pieces for n = " +str( n)
+" is " + str(findMaximumPieces(3)))
# This code is contributed by ChitraNayal
C#
// C# program to find maximum
// no of pieces by given number
// of cuts
using System;
class GFG
{
// Function for finding maximum
// pieces with n cuts.
public static int findMaximumPieces(int n)
{
// to maximize number of pieces
// x is the horizontal cuts
int x = n / 2;
// Now (x) is the horizontal
// cuts and (n-x) is vertical
// cuts, then maximum number
// of pieces = (x+1)*(n-x+1)
return ((x + 1) * (n - x + 1));
}
// Driver code
static public void Main ()
{
// Taking the maximum number
// of cuts allowed as 3
int n = 3;
// Finding and printing the
// max number of pieces
Console.Write("Max number of pieces for n = " +
n + " is " + findMaximumPieces(3));
}
}
// This code is contributed by Mahadev
PHP
Javascript
输出:
Max number of pieces for n = 3 is 6