在本教程中,我们将讨论一个程序,用于查找数组中最小值和次小值的最大和。我们将得到一个包含整数的数组。我们的任务是在数组的每次迭代中找到最小和次小元素的最大和。示例 在线演示 #include using namespace std; //返回最小值和次小值的最大和 int pairWithMaxSum(int arr[], int N) { if (N < 2) return -1; int res = arr[0] + arr[1]; for (int i=1; i
在本教程中,我们将讨论一个程序,用于查找两个数组乘积的最大和。我们将得到两个大小相同的数组。我们的任务是通过将第一个数组中的一个元素与第二个数组中的一个元素相乘来找到最大和。示例 在线演示 #include using namespace std; //计算通过乘法得到的最大和 int maximumSOP(int *a, int *b) { int sop = 0; int n = sizeof(a)/sizeof(a[0]); sort(a,a+n+1); sort(b,b+n+1); for (int i = 0; i
在本教程中,我们将讨论一个程序,用于查找允许负数的数组中成对乘积的最大和。我们将得到一个包含整数的数组。我们的任务是在进行成对乘法时找到最大和。示例 在线演示 #include #define Mod 1000000007 using namespace std; //查找最大和 long long int findSum(int arr[], int n) { long long int sum = 0; //对数组进行排序 sort(arr, arr + n); int i = 0; while (i < n && arr[i] < 0) { if (i ... 阅读更多
在本教程中,我们将讨论一个程序,用于查找具有特定差值的数对的最大和。我们将得到一个包含整数和一个值 K 的数组。我们的任务是将差值小于 K 的元素配对,最后找到不相交集合中元素的最大和。示例 在线演示 #include using namespace std; //返回差值小于 K 的不相交数对的最大和 int maxSumPairWithDifferenceLessThanK(int arr[], int N, int K){ sort(arr, arr+N); int dp[N]; dp[0] = 0; for (int i = 1; i < N; i++) { dp[i] = dp[i-1]; ... 阅读更多
在本教程中,我们将讨论一个程序,使用动态规划来查找二叉树中节点的最大和,条件是不相邻。我们将得到一棵二叉树。我们的任务是使用动态规划找到具有最大和的子集,条件是子集中的任何两个节点都不直接连接。示例 在线演示 #include using namespace std; //使用动态规划查找直径 void dfs(int node, int parent, int dp1[], int dp2[], list* adj, int tree[]){ int sum1 = 0, sum2 = 0; for (auto i = adj[node].begin(); i != adj[node].end(); ... 阅读更多
在本教程中,我们将讨论一个程序,用于查找来自n个数组的递增顺序元素的最大和。我们将得到N个大小为M的数组。我们的任务是从每个数组中选择一个元素来找到最大和,条件是前一个数组的元素小于下一个数组的元素。示例 在线演示 #include #define M 4 using namespace std; //计算通过选择一个元素得到的最大和 int maximumSum(int a[][M], int n) { for (int i = 0; i < n; i++) sort(a[i], a[i] + M); int sum ... 阅读更多
在本教程中,我们将讨论一个程序,用于查找递增子序列的最大乘积。我们将得到一个整数数组。我们的任务是找到数组的任何子序列的最大乘积,子序列可以包含任意数量的元素。示例 在线演示 #include #define ll long long int using namespace std; //返回最大乘积 ll lis(ll arr[], ll n) { ll mpis[n]; //初始化值 for (int i = 0; i < n; i++) mpis[i] = arr[i]; for (int i = 1; i < n; i++) ... 阅读更多
本教程将讨论一个程序,用于查找大小为 3 的递增子序列的最大乘积。我们将得到一个正整数数组,我们的任务是找到具有最大乘积的三个元素的子序列。示例 #include using namespace std; // 返回子序列的最大乘积 long long int maxProduct(int arr[] , int n) { int smaller[n]; smaller[0] = -1 ; setS ; for (int i = 0; i < n ; i++) { auto j = S.insert(arr[i]); auto itc = j.first; ... 阅读更多