該數組的輸入是{4,13,9,10,17,25,35,40,29,48,52,12,15,71,27,32}。我需要比較每個兩個元素(如4和13),較大的元素轉到臨時數組,並與數組中的下一個元素進行比較,以此類推。計算數組的前綴最大值
我有這個代碼,它給我的數組 {13,10,25,40,48,52,71,32,13,40,52,71,40,71} 我需要得到像下面陣列輸出 {4,13,13,13,17,25,35,40,40,48,52,52,52,71,71,71}
#include <stdio.h>
int main()
{
int pairmax(int[], int);
int premax(int[], int);
int i, j, max1, max2, n;
n=16;
int x[16]={4, 13, 9, 10, 17, 25, 35, 40, 29, 48, 52, 12, 15, 71, 27, 32};
max1 = pairmax(x,n);
max2 = premax(x, n);
printf("Pairwise max: Largest = %d\n",max1);
printf("Prefix max: Largest = %d\n",max2);
}
int pairmax(int x[], int n) // Implementation of Pairwise Max
{
int max(int, int);
int y[10], i, j;
if (n==2)
return max(x[0], x[1]);
for(i=0, j=0; i<n;i+=2,j++)
{
if(i < n-1)
y[j] = max(x[i], x[i+1]);
else
y[j] = x[i];
printf("Prefix max: Largest = %d\n",y[j]);
}
return pairmax(y,j);
}
int premax(int x[], int n) // Implementation of Prefix Max
{
int max(int, int);
int large, i;
large = x[0];
for(i=1; i<n;i++)
large = max(large,x[i]);
return large;
}
int max(int a, int b)
{
if (a > b)
return a;
else
return b;
}
好的。那麼你有什麼疑問? –
當前的邏輯是X + Y + 1提供的代碼遵循這個邏輯,我需要將其更改爲找到最大數量,而不是當前數組的總和x = {1,2,3,4,5,6,7, 8} - 輸入 y =(1,3,6,10,15,21,28,36) - 輸出。我需要這樣的例如:: x = {4,13,9,10,17,25,35,40,29,48,52,12,15,71,27,32} 預期的輸出是:y = {4,13,13,13,17,25,35,40,40,48,52,52,52,71,71,71} –
它比較自己與陣列的每個元素,轉發並將其自身與數組中的下一個元素進行比較。第一個元素將自身比較爲0以啓動該過程。如0和4哪一個更大,那麼它會把4前進。然後在4和13之間,哪一個更大,然後13被轉發等等。我需要打印該數組。 –