search
HomeBackend DevelopmentC++Written in C++, translate the following into Chinese: Calculate the minimum common sum of K arrays after deleting part of the array

Written in C++, translate the following into Chinese: Calculate the minimum common sum of K arrays after deleting part of the array

When using C arrays, we sometimes need to calculate the minimum common sum among multiple arrays while removing part of their suffixes. In this article, we will explore an efficient solution to this problem using C.

grammar

Let's first analyze the syntax of our chosen method before proceeding to implement it in our code -

int findMinimumCommonSum(vector<vector<int>>& arrays, int suffixToRemove);

algorithm

Here is a step-by-step algorithm to solve the problem of finding the least common sum after deleting part of the array suffix -

  • First define the function findMinimumCommonSum, which accepts two parameters - arrays, a two-dimensional vector representing the array, and suffixToRemove, an integer representing the number of elements to be removed from the suffix of each array.

  • Initialize a variable minimumSum to store the minimum common sum, and set its initial value to a larger value.

  • Iterate through each array in the array vector.

  • Determine the size of the current array.

  • To avoid ending up with an empty array, you should consider skipping iterations of suffixToRemove that are greater than or equal to the total size of the current array. Removing all characters in this case does not produce any meaningful output.

  • Calculate the sum of array elements from index 0 to size - suffixToRemove - 1 and store it in the variable currentSum.

  • If currentSum is less than minimumSum, use the value of currentSum to update minimumSum.

  • After traversing all arrays, minimumSum will contain the smallest common sum in the array after removing the specified suffix.

Method 1: Brute force cracking

In this approach we will generate all possible combinations of the suffixes to be removed and calculate the sum for each combination. The smallest sum among all combinations is the least common sum.

Example

#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>

using namespace std;

int findMinimumCommonSum(vector<vector<int>>& arrays, int suffixToRemove) {
   int minimumSum = INT_MAX;
   int k = arrays.size();

   for (int i = 0; i < k; i++) {
      int size = arrays[i].size();

      if (suffixToRemove >= size)
         continue;

      vector<bool> suffix(size, false);
      fill(suffix.begin() + size - suffixToRemove, suffix.end(), true);

      do {
         int currentSum = 0;
         
         for (int j = 0; j < k; j++) {
            int arraySum = 0;
            for (int l = 0; l < size; l++) {
               if (!suffix[l])
                  arraySum += arrays[j][l];
            }
            currentSum += arraySum;
         }

         if (currentSum < minimumSum)
            minimumSum = currentSum;

      } while (next_permutation(suffix.begin(), suffix.end()));
   }

   return minimumSum;
}

int main() {
   vector<vector<int>> arrays = {{1, 2, 3},
                                 {4, 5, 6},
                                 {7, 8, 9}};

   int suffixToRemove = 1;

   int minimumCommonSum = findMinimumCommonSum(arrays, suffixToRemove);

   cout << "Minimum Common Sum: " << minimumCommonSum << endl;

   return 0;
}

Output

Minimum Common Sum: 27

illustrate

In the brute force method, our goal is to find the smallest common sum between multiple arrays after removing a specified number of elements from their suffixes. The method involves generating all possible combinations of the suffixes to be removed and calculating the sum of each combination. The smallest sum among all combinations will be the smallest common sum.

To implement this approach, we define a function called findMinimumCommonSum, which accepts two parameters: an array (a 2D vector representing the array) and suffixToRemove (an integer representing the number of elements to be removed from each array suffix) ).

Inside the function, we initialize a variable minimumSum to store the minimum common sum, and the initial value is set to the maximum possible value of type int. Then we iterate through each array in the array vector. For each array, we determine its size and check if the suffixToRemove value is less than the size.

If the conditions are met, we use a Boolean vector to generate all possible suffix combinations. We fill the last suffixToRemove elements with true and the remaining elements with false. For each array, we determine its size and check if the suffixToRemove value is less than the size.

We proceed by computing the sum of the array values ​​corresponding to the false indicators in the suffix vector, for each combination. We repeat this process for all arrays, updating currentSum accordingly.

Finally, we compare currentSum with minimumSum, and if currentSum is smaller, update minimumSum. After iterating through all arrays and combinations, minimumSum will contain the minimum common sum after removing the specified suffix.

Method 2: Efficient sorting

In this method, we will sort the arrays in non-decreasing order and calculate the sum of the first size - suffixToRemove elements of each array. The smallest sum among all arrays will be the smallest common sum.

Example

#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>

using namespace std;

int findMinimumCommonSum(vector<vector<int>>& arrays, int suffixToRemove) {
   int minimumSum = INT_MAX;
   int k = arrays.size();

   for (int i = 0; i < k; i++) {
      int size = arrays[i].size();

      if (suffixToRemove >= size)
         continue;

      sort(arrays[i].begin(), arrays[i].end());

      int currentSum = 0;
      for (int j = 0; j < size - suffixToRemove; j++)
         currentSum += arrays[i][j];

      if (currentSum < minimumSum)
         minimumSum = currentSum;
   }

   return minimumSum;
}

int main() {
   vector<vector<int>> arrays = {{1, 2, 3},
                                 {4, 5, 6},
                                 {7, 8, 9}};

   int suffixToRemove = 1;

   int minimumCommonSum = findMinimumCommonSum(arrays, suffixToRemove);

   cout << "Minimum Common Sum: " << minimumCommonSum << endl;
   
   return 0;
}

Output

Minimum Common Sum: 3

illustrate

In efficient sorting method, our goal is to find the minimum common sum between multiple arrays after removing a specified number of elements from the suffix. This approach takes advantage of the fact that sorting the array simplifies the calculation of the minimum sum.

To implement this approach, we define a function called findMinimumCommonSum, which accepts two parameters: an array (a 2D vector representing the array) and suffixToRemove (an integer representing the number of elements to be removed from each array suffix) ).

Inside the function, we initialize a variable minimumSum to store the minimum common sum, and the initial value is set to the maximum possible value of type int. Then we iterate through each array in the array vector. For each array, we determine its size and check if the suffixToRemove value is less than the size.

When this prerequisite is met, one of our next steps will be to sort all the individual components in our array in ascending order; this approach mainly helps to ensure that smaller objects are in their initial section to improve the sorting and readability.

Next, we calculate the sum of the first size - suffixToRemove elements in the sorted array. This corresponds to removing the specified number of elements from the suffix. We update currentSum accordingly.

Finally, we compare currentSum with minimumSum, and if currentSum is smaller, update minimumSum. After iterating through all arrays, minimumSum will contain the minimum common sum after removing the specified suffix.

This method is very efficient because it does not require generating and iterating all possible combinations like brute force methods. Instead, it exploits the ordering properties to simplify the calculation of the minimum sum, thus improving performance.

in conclusion

In this article, we explore an efficient way to find the smallest common sum among K arrays in C, after removing part of their suffixes. We discussed two methods - brute force and efficient sorting. The brute force method involves generating all combinations of suffixes, while the efficient sort method sorts the array and calculates the sum of the first few elements. Depending on the size of the array and the number of suffix elements to be removed, efficient sort is usually more efficient. By implementing these methods in a C program, you can easily find the smallest common sum from multiple arrays and handle the removal of suffixes efficiently.

The above is the detailed content of Written in C++, translate the following into Chinese: Calculate the minimum common sum of K arrays after deleting part of the array. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:tutorialspoint. If there is any infringement, please contact admin@php.cn delete
How does the C   Standard Template Library (STL) work?How does the C Standard Template Library (STL) work?Mar 12, 2025 pm 04:50 PM

This article explains the C Standard Template Library (STL), focusing on its core components: containers, iterators, algorithms, and functors. It details how these interact to enable generic programming, improving code efficiency and readability t

How do I use algorithms from the STL (sort, find, transform, etc.) efficiently?How do I use algorithms from the STL (sort, find, transform, etc.) efficiently?Mar 12, 2025 pm 04:52 PM

This article details efficient STL algorithm usage in C . It emphasizes data structure choice (vectors vs. lists), algorithm complexity analysis (e.g., std::sort vs. std::partial_sort), iterator usage, and parallel execution. Common pitfalls like

How do I handle exceptions effectively in C  ?How do I handle exceptions effectively in C ?Mar 12, 2025 pm 04:56 PM

This article details effective exception handling in C , covering try, catch, and throw mechanics. It emphasizes best practices like RAII, avoiding unnecessary catch blocks, and logging exceptions for robust code. The article also addresses perf

How do I use ranges in C  20 for more expressive data manipulation?How do I use ranges in C 20 for more expressive data manipulation?Mar 17, 2025 pm 12:58 PM

C 20 ranges enhance data manipulation with expressiveness, composability, and efficiency. They simplify complex transformations and integrate into existing codebases for better performance and maintainability.

How does dynamic dispatch work in C   and how does it affect performance?How does dynamic dispatch work in C and how does it affect performance?Mar 17, 2025 pm 01:08 PM

The article discusses dynamic dispatch in C , its performance costs, and optimization strategies. It highlights scenarios where dynamic dispatch impacts performance and compares it with static dispatch, emphasizing trade-offs between performance and

How do I use move semantics in C   to improve performance?How do I use move semantics in C to improve performance?Mar 18, 2025 pm 03:27 PM

The article discusses using move semantics in C to enhance performance by avoiding unnecessary copying. It covers implementing move constructors and assignment operators, using std::move, and identifies key scenarios and pitfalls for effective appl

How do I use rvalue references effectively in C  ?How do I use rvalue references effectively in C ?Mar 18, 2025 pm 03:29 PM

Article discusses effective use of rvalue references in C for move semantics, perfect forwarding, and resource management, highlighting best practices and performance improvements.(159 characters)

How does C  's memory management work, including new, delete, and smart pointers?How does C 's memory management work, including new, delete, and smart pointers?Mar 17, 2025 pm 01:04 PM

C memory management uses new, delete, and smart pointers. The article discusses manual vs. automated management and how smart pointers prevent memory leaks.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools