mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-02-13 15:37:06 +08:00
feat: Added namespace greedy_algoriithms
This commit is contained in:
@@ -4,73 +4,76 @@
|
||||
#include <vector>
|
||||
#include <cassert>
|
||||
|
||||
namespace greedy_algorithms{
|
||||
|
||||
/**
|
||||
* @brief A class that provides methods to separate the digits of a large
|
||||
* positive number.
|
||||
*/
|
||||
class DigitSeparation {
|
||||
public:
|
||||
/**
|
||||
* @brief Default constructor for the DigitSeparation class.
|
||||
*/
|
||||
DigitSeparation() {}
|
||||
class DigitSeparation {
|
||||
public:
|
||||
/**
|
||||
* @brief Default constructor for the DigitSeparation class.
|
||||
*/
|
||||
DigitSeparation() {}
|
||||
|
||||
/**
|
||||
* @brief Separates the digits of a large positive number into a vector in
|
||||
* reverse order.
|
||||
*
|
||||
* @param largeNumber The large number to separate digits from.
|
||||
* @return A vector of digits in reverse order.
|
||||
*/
|
||||
std::vector<long long> digitSeparationReverseOrder(
|
||||
long long largeNumber) const;
|
||||
|
||||
/**
|
||||
* @brief Separates the digits of a large positive number into a vector in
|
||||
* forward order.
|
||||
*
|
||||
* @param largeNumber The large number to separate digits from.
|
||||
* @return A vector of digits in forward order.
|
||||
*/
|
||||
std::vector<long long> digitSeparationForwardOrder(
|
||||
long long largeNumber) const;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Separates the digits of a large positive number into a vector in
|
||||
* reverse order.
|
||||
* @brief Implementation of digitSeparationReverseOrder method.
|
||||
*
|
||||
* @param largeNumber The large number to separate digits from.
|
||||
* @return A vector of digits in reverse order.
|
||||
*/
|
||||
std::vector<long long> digitSeparationReverseOrder(
|
||||
long long largeNumber) const;
|
||||
std::vector<long long> DigitSeparation::digitSeparationReverseOrder(
|
||||
long long largeNumber) const {
|
||||
std::vector<long long> result;
|
||||
if (largeNumber != 0) {
|
||||
while (largeNumber != 0) {
|
||||
result.push_back(std::abs(largeNumber % 10));
|
||||
largeNumber /= 10;
|
||||
}
|
||||
} else {
|
||||
result.push_back(0);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Separates the digits of a large positive number into a vector in
|
||||
* forward order.
|
||||
* @brief Implementation of digitSeparationForwardOrder method.
|
||||
*
|
||||
* @param largeNumber The large number to separate digits from.
|
||||
* @return A vector of digits in forward order.
|
||||
*/
|
||||
std::vector<long long> digitSeparationForwardOrder(
|
||||
long long largeNumber) const;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Implementation of digitSeparationReverseOrder method.
|
||||
*
|
||||
* @param largeNumber The large number to separate digits from.
|
||||
* @return A vector of digits in reverse order.
|
||||
*/
|
||||
std::vector<long long> DigitSeparation::digitSeparationReverseOrder(
|
||||
long long largeNumber) const {
|
||||
std::vector<long long> result;
|
||||
if (largeNumber != 0) {
|
||||
while (largeNumber != 0) {
|
||||
result.push_back(std::abs(largeNumber % 10));
|
||||
largeNumber /= 10;
|
||||
}
|
||||
} else {
|
||||
result.push_back(0);
|
||||
std::vector<long long> DigitSeparation::digitSeparationForwardOrder(
|
||||
long long largeNumber) const {
|
||||
std::vector<long long> result = digitSeparationReverseOrder(largeNumber);
|
||||
std::reverse(result.begin(), result.end());
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Implementation of digitSeparationForwardOrder method.
|
||||
*
|
||||
* @param largeNumber The large number to separate digits from.
|
||||
* @return A vector of digits in forward order.
|
||||
*/
|
||||
std::vector<long long> DigitSeparation::digitSeparationForwardOrder(
|
||||
long long largeNumber) const {
|
||||
std::vector<long long> result = digitSeparationReverseOrder(largeNumber);
|
||||
std::reverse(result.begin(), result.end());
|
||||
return result;
|
||||
}
|
||||
|
||||
int main() {
|
||||
DigitSeparation ds;
|
||||
greedy_algorithms::DigitSeparation ds;
|
||||
|
||||
// Test case: Positive number
|
||||
long long number = 1234567890;
|
||||
|
||||
Reference in New Issue
Block a user