给定数字1、2、3、4的计数,只允许使用这些数字形成234和12。任务是找到形成数字后可获得的最大和。
注意:即使某些数字未使用,其目的也只是使总和最大化。
例子:
Input : c1 = 5, c2 = 2, c3 = 3, c4 = 4
Output : 468
Explanation : We can form two 234s
Input : c1 = 5, c2 = 3, c3 = 1, c4 = 5
Output : 258
Explanation : We can form one 234 and two 12s
方法:一种有效的方法是首先尝试制作234。 234个可能的数目是c2,c3,c4的最小值。此后,用剩余的1和2尝试形成12。
下面是上述方法的实现:
C++
// CPP program to maximum possible sum
#include
using namespace std;
// Function to find the maximum possible sum
int Maxsum(int c1, int c2, int c3, int c4)
{
// To store required sum
int sum = 0;
// Number of 234's can be formed
int two34 = min(c2, min(c3, c4));
// Sum obtained with 234s
sum = two34 * 234;
// Remaining 2's
c2 -= two34;
// Sum obtained with 12s
sum += min(c2, c1) * 12;
// Return the requied sum
return sum;
}
// Driver code
int main()
{
int c1 = 5, c2 = 2, c3 = 3, c4 = 4;
cout << Maxsum(c1, c2, c3, c4);
return 0;
}
Java
// Java program to maximum possible sum
class GFG
{
// Function to find the maximum possible sum
static int Maxsum(int c1, int c2, int c3, int c4)
{
// To store required sum
int sum = 0;
// Number of 234's can be formed
int two34 = Math.min(c2,Math.min(c3, c4));
// Sum obtained with 234s
sum = two34 * 234;
// Remaining 2's
c2 -= two34;
// Sum obtained with 12s
sum +=Math.min(c2, c1) * 12;
// Return the requied sum
return sum;
}
// Driver code
public static void main(String[] args)
{
int c1 = 5, c2 = 2, c3 = 3, c4 = 4;
System.out.println(Maxsum(c1, c2, c3, c4));
}
}
// This code is contributed by Code_Mech.
Python3
# Python3 program to maximum possible sum
# Function to find the maximum
# possible sum
def Maxsum(c1, c2, c3, c4):
# To store required sum
sum = 0
# Number of 234's can be formed
two34 = min(c2, min(c3, c4))
# Sum obtained with 234s
sum = two34 * 234
# Remaining 2's
c2 -= two34
sum += min(c2, c1) * 12
# Return the requied sum
return sum
# Driver Code
c1 = 5; c2 = 2; c3 = 3; c4 = 4
print(Maxsum(c1, c2, c3, c4))
# This code is contributed by Shrikant13
C#
// C# program to maximum possible sum
using System;
class GFG
{
// Function to find the maximum possible sum
static int Maxsum(int c1, int c2, int c3, int c4)
{
// To store required sum
int sum = 0;
// Number of 234's can be formed
int two34 = Math.Min(c2, Math.Min(c3, c4));
// Sum obtained with 234s
sum = two34 * 234;
// Remaining 2's
c2 -= two34;
// Sum obtained with 12s
sum +=Math.Min(c2, c1) * 12;
// Return the requied sum
return sum;
}
// Driver code
public static void Main()
{
int c1 = 5, c2 = 2, c3 = 3, c4 = 4;
Console.WriteLine(Maxsum(c1, c2, c3, c4));
}
}
// This code is contributed
// by Akanksha Rai
PHP
输出:
468