Приведенный несортированный массив A[0...n-1]
целых чисел и целое число k
; желаемый алгоритм в C должен вычислять максимальное значение каждого смежного подмассива размером k
. Например, если A = [8,5,10,7,9,4,15,12,90,13]
и k=4
, то findKMax(A,4,10)
возвращает 10 10 10 15 15 90 90
.Максимальное значение каждого непрерывного подмассива
Моя цель - реализовать алгоритм как программу C, которая считывает элементы A
, читает k
, а затем печатает результат функции findKMax(A,4,10)
. Ввода/вывода пример показан сильфон (вход набирается жирным шрифтом):
Элементы A: 8 5 10 7 9 4 15 12 90 13 конец
типа К:
Результаты: 10 10 10 15 15 90 90
Что я пробовал до сих пор? Пожалуйста, имейте в виду, что я абсолютный новичок в C. Вот мой код:
#include <stdio.h>
void findKMax(int A[], int k, int n) {
int j;
int max;
for (int i = 0; i <= n-k; i++) {
max = A[i];
for (j = 1; j < k; j++) {
if (A[i+j] > max)
max = A[i+j];
}
}
}
int main() {
int n = sizeof(A);
int k = 4;
printf("Elements of A: ");
scanf("%d", &A[i]);
printf("Type k: %d", k);
printf("Results: %d", &max);
return 0;
}
Обновление 17 марта:
Я изменил исходный код, то я пытался реализовать намеки Майкла Берра и Прияна Гола. Вот мой результат:
#include <stdio.h>
// Returning the largest value in subarray of size k.
void findKMax(int A[], int k, int n) {
int j;
int largestValueOfSubarray;
for (int i = 0; i <= n-k; i++) {
largestValueOfSubarray = A[i];
for (j = 1; j < k; j++) {
if (A[i+j] > largestValueOfSubarray)
largestValueOfSubarray = A[i+j];
}
printf("Type k: %d", k);
}
return largestValueOfSubarray;
}
int main() {
int n = 10;
int A[n];
// Reading values into array A.
for (int i = 0; i < n; i++) {
printf("Enter the %d-th element of the array A: \n", i);
scanf("%d", &A[i]);
}
// Printing of all values of array A.
for (int i = 0; i < n; i++) {
printf("\nA[%d] = %d", i, A[i]);
}
printf("\n\n");
// Returning the largest value in array A.
int largestValue = A[0];
for (int i = 0; i < n; i++) {
if (A[i] > largestValue) {
largestValue = A[i];
}
}
printf("The largest value in the array A is %d. \n", largestValue);
return 0;
}
Я думаю, что кода не так много. Может кто-нибудь дать мне подсказку, как сделать все остальное. Мне нужен совет, как «объединить» фрагменты кода в запущенную программу.
Так в чем проблема? –
Я использую XCode IDE, и код не работает. –
«код не работает», можете ли вы быть немного менее расплывчатым? –