a-树 发表于 2018-10-21 17:05:10

各位大佬这道题怎么做啊啊啊_(:з」∠)_


这是某大佬的思路,看不懂_(:з」∠)_

claws0n 发表于 2018-10-21 17:34:12

不完整~
就双循环,找最大的差值,不?

a-树 发表于 2018-10-21 17:52:59

能详细解释每一步的意思不,或者您写上完整的(每一步也解释一下)

claws0n 发表于 2018-10-22 01:11:15

a-树 发表于 2018-10-21 17:52
能详细解释每一步的意思不,或者您写上完整的(每一步也解释一下)

无法还原,给我的话,我会这样做:先从左开始找最大值,然后从最大值开始,从右往左找最小值#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void generateRandomArray(int arr[], int n)
{
//        srand((unsigned int)time(NULL));
        srand(0);
        for (int i = 0; i < n; i++)
                arr = rand() % (n + 1);
}

void print(int arr[], int n)
{
        for(int i = 0; i < n; i++)
                printf("%d ", arr);
        printf("\n");
}

int main(void)
{
        int i, n = 40;
        int A;
        generateRandomArray(A, n);
        print(A, n);
       
        int max = A, min = 2*n;
        int flag_max = 0, flag_min = 0;
       
        for(i = 1; i < n; i++)
        {
                if(A >= max)
                {
                        max = A;
                        flag_max = i;
                }
        }
       
        for(i = flag_max; i >= 0; i--)
        {
                if(A <= min)
                {
                        min = A;
                        flag_min = i;
                }
        }
        printf("\nmin at A[%d] = %d, max at A[%d] = %d\n",\
        flag_min, A, flag_max, A);
       
    return 0;
}
页: [1]
查看完整版本: 各位大佬这道题怎么做啊啊啊_(:з」∠)_