给定一个数字N 。任务是找到将给定数字表示为二进制字符串总和所需的最少二进制字符串数。
例子:
Input : 131
Output : Minimum Number of binary strings needed: 3
111 10 10
Input : 564
Output :Minimum Number of binary strings needed: 6
111 111 111 111 110 10
方法:
- 将给定数字的所有数字存储在数组中。
- 找出数组中的最大数字。此最大数 (maxi) 表示表示给定数所需的二进制字符串数。
- 现在,通过逐渐替换 0 和 1 来找到最大数。
下面是上述方法的实现:
C++
// C++ program to find the minimum number of
// binary strings to represent a number
#include
using namespace std;
// Function to find the minimum number of
// binary strings to represent a number
void minBinary(int n)
{
int digit[10], len = 0;
while (n > 0) {
digit[len++] = n % 10;
n /= 10;
}
// Storing digits in correct order
reverse(digit, digit + len);
int ans = 0;
// Find the maximum digit in the array
for (int i = 0; i < len; i++) {
ans = max(ans, digit[i]);
}
cout << "Minimum Number of binary strings needed: "
<< ans << endl;
// Traverse for all the binary strings
for (int i = 1; i <= ans; i++)
{
int num = 0;
for (int j = 0; j < len; j++)
{
// If digit at jth position is greater
// than 0 then substitute 1
if (digit[j] > 0) {
num = num * 10 + 1;
digit[j]--;
}
else {
num *= 10;
}
}
cout << num << " ";
}
}
// Driver code
int main()
{
int n = 564;
minBinary(n);
return 0;
}
Java
// Java program to find the minimum number of
// binary Strings to represent a number
import java.util.*;
class GFG
{
// Function to find the minimum number of
// binary Strings to represent a number
static void minBinary(int n)
{
int[] digit = new int[10];
int len = 0;
while (n > 0)
{
digit[len++] = n % 10;
n /= 10;
}
// Storing digits in correct order
digit = reverse(digit, 0, len - 1);
int ans = 0;
// Find the maximum digit in the array
for (int i = 0; i < len; i++)
{
ans = Math.max(ans, digit[i]);
}
System.out.print("Minimum Number of binary" +
" Strings needed: " + ans + "\n");
// Traverse for all the binary Strings
for (int i = 1; i <= ans; i++)
{
int num = 0;
for (int j = 0; j < len; j++)
{
// If digit at jth position is greater
// than 0 then substitute 1
if (digit[j] > 0)
{
num = num * 10 + 1;
digit[j]--;
}
else
{
num *= 10;
}
}
System.out.print(num + " ");
}
}
static int[] reverse(int str[],
int start, int end)
{
// Temporary variable to store character
int temp;
while (start <= end)
{
// Swapping the first and last character
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
return str;
}
// Driver code
public static void main(String[] args)
{
int n = 564;
minBinary(n);
}
}
// This code is contributed by 29AjayKumar
Python3
# Python3 program to find the minimum number of
# binary strings to represent a number
# Function to find the minimum number of
# binary strings to represent a number
def minBinary(n):
digit = [0 for i in range(3)]
len = 0
while (n > 0):
digit[len] = n % 10
len += 1
n //= 10
# Storing digits in correct order
digit = digit[::-1]
ans = 0
# Find the maximum digit in the array
for i in range(len):
ans = max(ans, digit[i])
print("Minimum Number of binary strings needed:", ans)
# Traverse for all the binary strings
for i in range(1, ans + 1, 1):
num = 0
for j in range(0, len, 1):
# If digit at jth position is greater
# than 0 then substitute 1
if (digit[j] > 0):
num = num * 10 + 1
digit[j] -= 1
else:
num *= 10
print(num, end = " ")
# Driver code
if __name__ == '__main__':
n = 564
minBinary(n)
# This code is contributed by
# Surendra_Gangwar
C#
// C# program to find the minimum number of
// binary Strings to represent a number
using System;
class GFG
{
// Function to find the minimum number of
// binary Strings to represent a number
static void minBinary(int n)
{
int[] digit = new int[10];
int len = 0;
while (n > 0)
{
digit[len++] = n % 10;
n /= 10;
}
// Storing digits in correct order
digit = reverse(digit, 0, len - 1);
int ans = 0;
// Find the maximum digit in the array
for (int i = 0; i < len; i++)
{
ans = Math.Max(ans, digit[i]);
}
Console.Write("Minimum Number of binary" +
" Strings needed: " + ans + "\n");
// Traverse for all the binary Strings
for (int i = 1; i <= ans; i++)
{
int num = 0;
for (int j = 0; j < len; j++)
{
// If digit at jth position is greater
// than 0 then substitute 1
if (digit[j] > 0)
{
num = num * 10 + 1;
digit[j]--;
}
else
{
num *= 10;
}
}
Console.Write(num + " ");
}
}
static int[] reverse(int []str,
int start, int end)
{
// Temporary variable to store character
int temp;
while (start <= end)
{
// Swapping the first and
// last character
temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
return str;
}
// Driver code
public static void Main(String[] args)
{
int n = 564;
minBinary(n);
}
}
// This code is contributed by 29AjayKumar
Javascript
输出:
Minimum No of binary strings needed: 6
111 111 111 111 110 10
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。