給定一個整數的未排序數組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端
K型:
結果: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;
}
更新3月17日:
我修改的源代碼,也就是我試圖實現Michael Burr和Priyansh Goel的提示。這是我的結果:
#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並且代碼不起作用。 ' –
'代碼不起作用'好吧,你能稍微模糊一點嗎? –