Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Đọcarr[] consisting of
N integers and an integer K, the task is to print the maximum sum possible in a subsequence satisfying the following conditions:
- Bàn luậnarr[N – 1] and arr[0] are included in the subsequence.
- Đưa ra một mảng mảng [] bao gồm n số nguyên và số nguyên k, nhiệm vụ là in tổng tối đa có thể trong một phần sau đáp ứng các điều kiện sau: & nbsp; & nbsp;K indices.
Examples:
Các phần tử ARR [N - 1] và ARR [0] được bao gồm trong phần sau. arr[] = {10, -5, -2, 4, 0, 3}, K = 3
Output: 17
Explanation:
One of possible way is as follows:
Include arr[0] into the subsequence. Sum = 10.
Include arr[3] in the subsequence. Therefore, sum = 10 + 4 = 14.
Include arr[5] in the subsequence. Therefore, total sum = 14 + 3 = 17.
Therefore, the maximum sum possible is 17.Các yếu tố liền kề trong phần sau có thể ở khoảng cách tại hầu hết các chỉ số k. arr[] = {1, -5, -20, 4, -1, 3, -6, -3}, K = 2
Output: 0
Đầu vào: ARR [] = {10, -5, -2, 4, 0, 3}, k = 3Output: 17Explanation: Một trong những cách có thể như sau: Bao gồm ARR [0] vào sau. Sum = 10.include mảng [3] trong phần sau. Do đó, sum = 10 + 4 = 14. bao gồm mảng [5] trong phần sau. Do đó, tổng tổng = 14 + 3 = 17. Do đó, tổng tối đa có thể là 17. The simplest approach is to find all subsequences possible from arr[] with at most K difference between indices of adjacent elements, starting from index 0 and ending at index [N – 1]. Calculate sum of all such subsequences. Finally, print the maximum of all the sums obtained.
Time
Complexity: O[N*2N]
Auxiliary Space: O[N]
Đầu vào: mảng [] = {1, -5, -20, 4, -1, 3, -6, -3}, k = 2Output: 0 The above approach can be optimized by using a Greedy Algorithm and deque. Follow the steps below to solve the problem:
- Cách tiếp cận ngây thơ: Cách tiếp cận đơn giản nhất là tìm tất cả các Trình tiếp theo có thể từ ARR [] với hầu hết các khác biệt k giữa các chỉ số của các phần tử liền kề, bắt đầu từ INDEX 0 và kết thúc tại INDEX [N - 1]. Tính tổng của tất cả các chuỗi như vậy. Cuối cùng, in tối đa của tất cả các tổng thu được.dp[], to store the maximum value obtained till the current index.
- Cách tiếp cận hiệu quả: Cách tiếp cận trên có thể được tối ưu hóa bằng cách sử dụng thuật toán tham lam và deque. Thực hiện theo các bước dưới đây để giải quyết vấn đề:Q, to store the pair {dp[i], i}.
- Khởi tạo một mảng, giả sử DP [], để lưu trữ giá trị tối đa thu được cho đến khi chỉ số hiện tại. arr[0] to dp[0] and push the pair {dp[0], 0} into the deque.
- Khởi tạo một deque của các cặp, nói q, để lưu trữ cặp {dp [i], i}.arr[] using the variable i and perform the following steps:
- Chỉ định giá trị của mảng [0] cho dp [0] và đẩy cặp {dp [0], 0} vào deque.dp[i] by the sum of arr[i] and maximum value in the deque, i.e. dp[i] = arr[i] + Q[0][0].
- Traverse mảng đã cho [] bằng cách sử dụng biến I và thực hiện các bước sau: Q from the end and pop the last element if Q[-1][0] is less than dp[i].
- Tăng dp [i] bởi tổng của mảng [i] và giá trị tối đa trong deque, tức là dp [i] = mảng [i] + q [0] [0]. {dp[i], i} in the deque.
- Traverse qua deque q từ cuối và bật phần tử cuối cùng nếu q [-1] [0] nhỏ hơn dp [i].q is equal to [i – K] or not and then, pop the first element from the deque Q.
- Nối lại cặp {dp [i], i} trong deque.dp[], i.e. dp[N – 1] as the result.
Kiểm tra xem chỉ số của phần tử đầu tiên của deque q có bằng [i - k] hay không và sau đó, hãy bật phần tử đầu tiên từ deque q.
C++
#include
Sau khi hoàn thành các bước trên, in giá trị được lưu trữ tại chỉ số cuối cùng của DP [], tức là DP [N - 1] do kết quả.
Dưới đây là việc thực hiện phương pháp trên:
using
namespace
std;
using
2using
6
using
2using
8int
namespace
0int
namespace
2
using
2namespace
4
int
maxResult[
int
arr[],
int
k,
int
using
1
using
2std;
1
std;
2std;
3
using
2int
using
4
std;
7std;
8
std;
2int
0
using
2namespace
6 namespace
7int
namespace
9
std;
7int
5
using
2int
7
std;
2std;
5 std;
6
int
7
std;
2int
2 int
3
std;
1
using
2int
9 maxResult[
0
int
maxResult[
3
using
2int
maxResult[
7
using
2int
9
int
7
using
2int
int
0
using
2int
int
3int
4int
5int
444767
Java
arr[],
1 arr[],
2
arr[],
1 arr[],
4
arr[],
1 arr[],
6
arr[],
7 arr[],
8 arr[],
9
std;
2int
1 arr[],
8 int
3
k,
3k,
4k,
5
k,
3k,
4k,
8
int
4int
7
std;
2int
7
int
4int
int
6
int
4int
8int
k,
0int
k,
2
int
4using
21using
22using
23using
22using
25
std;
2using
04 int
1 int
int
4int
using
16using
17 int
using
19
int
4using
27using
17 using
29
int
4std;
1
using
47using
48
int
4using
31using
17 using
33using
2222135using
222
k,
3using
55
int
4namespace
6 namespace
7int
using
42using
43using
44
using
47std;
5 using
51using
22 using
53
using
47using
31using
17 using
59
int
4int
7
using
47int
2 using
62
std;
2int
7
k,
3using
64
std;
2std;
1
int
4int
9 using
69using
43using
25
std;
2arr[],
7 int
1 using
77 using
78
int
4int
using
83using
84using
85using
86using
85using
88__
int
4namespace
05
std;
2int
7
int
7
Python3
int
4int
using
98using
94namespace
00
int
4int
namespace
03
namespace
09 namespace
10arr[],
1 namespace
12
namespace
13 namespace
14
Các
std;
2namespace
6 namespace
42namespace
43 namespace
44namespace
7using
43using
89namespace
2222249
int
4namespace
51namespace
17 namespace
53namespace
54 namespace
55using
222257__
int
4std;
5 namespace
33namespace
63 namespace
55namespace
65using
43namespace
57using
222269
k,
3namespace
71
int
4namespace
73
int
4int
2 namespace
42namespace
65 namespace
78__
k,
3namespace
87
std;
2int
9 using
21namespace
65using
43namespace
20
namespace
94namespace
17 namespace
18using
84using
89namespace
65using
86__
std;
11namespace
17 using
94
std;
14std;
15
C#
using
std;
17
using
std;
19
using
std;
21
using
std;
23
arr[],
8 std;
25
std;
1
using
2arr[],
8 int
3
std;
2arr[],
7 int
int
6
std;
2arr[],
7 int
8int
k,
0int
k,
2
std;
7k,
4k,
5
std;
7k,
4k,
8
std;
2int
7
using
2int
7
using
2int
1 int
std;
2int
std;
63using
17 int
using
19
std;
2using
6
std;
2std;
70using
17 std;
72
std;
2int
std;
75
std;
2std;
777____117 std;
79
std;
2std;
81
std;
2namespace
6 namespace
7int
std;
86
std;
2std;
1
std;
7std;
90
std;
7std;
5 std;
93
int
4std;
95
std;
7int
2std;
98
int
4std;
777____117 using
59
std;
7int
7int
05std;
1
int
4int
08using
17 int
10
std;
7int
7
std;
7std;
81
std;
7int
2 int
17
int
4int
19
std;
2int
7
std;
2int
9 maxResult[
0
using
2int
7
using
2arr[],
7 int
1 using
77 int
31int
32int
33
std;
2int
int
36using
17 int
int
39
std;
2int
int
0
std;
2int
int
45
std;
2int
47
using
2int
7
int
7
Độ phức tạp về thời gian: O [N] Không gian phụ trợ: O [N] O[N]
Auxiliary Space: O[N]