在本教程中,我们将讨论一个查找最大交替子序列和的程序。我们将得到一个整数数组。我们的任务是找到最大交替子序列的和,即先递减,然后递增,然后递减等等的序列。示例 实时演示#include using namespace std; //返回最大交替序列和 int maxAlternateSum(int arr[], int n) { if (n == 1) return arr[0]; int dec[n]; memset(dec, 0, sizeof(dec)); int inc[n]; memset(inc, 0, sizeof(inc)); dec[0] = inc[0] = arr[0]; int flag = 0 ; for (int i=1; i
在本教程中,我们将讨论一个程序,用于查找最大子矩阵面积,条件是1的个数比0的个数多一个。我们将得到一个包含0和1的矩阵。我们的任务是获取面积最大的子矩阵,其中1的个数比0的个数多。示例 实时演示#include using namespace std; #define SIZE 10 //查找最长子矩阵的长度 int lenOfLongSubarr(int arr[], int n, int& start, int& finish) { unordered_map um; int sum = 0, maxLen = 0; for (int i = 0; i < n; i++) { sum ... 阅读更多
在本教程中,我们将讨论一个程序,用于查找重复连接后创建的数组中的最大子数组和。我们将得到一个数组和一个整数K。我们的任务是找到当给定数组重复K次时,元素最多的子数组。示例 实时演示#include using namespace std; //返回最大子数组的和 int maxSubArraySumRepeated(int a[], int n, int k) { int max_so_far = INT_MIN, max_ending_here = 0; for (int i = 0; i < n*k; i++) { max_ending_here = max_ending_here + a[i%n]; if ... 阅读更多
在本教程中,我们将讨论一个程序,用于查找排除某些元素后的最大子数组和。我们将得到两个大小分别为M和N的数组。我们的任务是在第一个数组中找到一个子数组,该子数组中没有任何元素出现在第二个数组中,并且子数组的元素之和最大。示例 实时演示#include using namespace std; //检查元素是否出现在第二个数组中 bool isPresent(int B[], int m, int x) { for (int i = 0; i < m; i++) if (B[i] == x) ... 阅读更多
在本教程中,我们将讨论一个程序,用于查找最大子数组大小,条件是该大小的所有子数组的和都小于k。我们将得到一个大小为N的数组和一个整数k。我们的任务是找到子数组的长度,使得给定数组中该长度的所有子数组的和都小于或等于k。示例 实时演示#include using namespace std; //查找最大长度子数组 int bsearch(int prefixsum[], int n, int k) { int ans = -1; //执行二分查找 int left = ... 阅读更多
在本教程中,我们将讨论一个程序,用于查找在给所有人奖励且不超过100分后,最多有多少学生及格。我们将得到一个包含N个学生分数的数组。我们的任务是通过给每个学生相同数量的奖励分数来让更多学生通过考试(需要50分),但任何学生都不能超过100分。示例 实时演示#include #include using namespace std; int check(int n, int marks[]) { int* x = std::max_element(marks, marks+5); int bonus = 100-(int)(*x); int c = 0; for(int i=0; i= 50) ... 阅读更多