在 C++ 中滿足可除條件下,每個位置的最大路徑和,帶有跳躍
在本教程中,我們將討論一個在可除條件下,帶有跳躍的每個位置的最大路徑和
為此,將為我們提供一個包含 n 個隨機整數的陣列。我們的任務是從一個位置跳到另一個位置,如果它可以整除,並且最終為每個給定的位置提供最大和路徑。
舉例
#include <bits/stdc++.h>
using namespace std;
//finding maximum sum path
void printMaxSum(int arr[], int n) {
int dp[n];
memset(dp, 0, sizeof dp);
for (int i = 0; i < n; i++) {
dp[i] = arr[i];
int maxi = 0;
for (int j = 1; j <= sqrt(i + 1); j++) {
if (((i + 1) % j == 0) && (i + 1) != j) {
if (dp[j - 1] > maxi)
maxi = dp[j - 1];
if (dp[(i + 1) / j - 1] > maxi && j != 1)
maxi = dp[(i + 1) / j - 1];
}
}
dp[i] += maxi;
}
for (int i = 0; i < n; i++)
cout << dp[i] << " ";
}
int main() {
int arr[] = { 2, 3, 1, 4, 6, 5 };
int n = sizeof(arr) / sizeof(arr[0]);
printMaxSum(arr, n);
return 0;
}輸出
2 5 3 9 8 10
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP