打印极值点下标-OpenJ_Bailian - 2691(水题)

本题没啥难的地方,关键在于输出格式

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n, m;
    scanf("%d", &n);
    while(n--)
    {
        scanf("%d", &m);
        int *tmp = (int *)malloc(m * sizeof(int));
        for(int i = 0; i < m; i++)
            scanf("%d", &tmp[i]);
        
        bool flag = true;  //标记是否是第一次输出,第一次输出"num", 以后每一次输出" num" 
        
        if(tmp[0] > tmp[1] || tmp[0] < tmp[1])
        {
            printf("%d", 0);
            flag = false;
        }
            
        for(int i = 1; i < m-1; i++)
        {
            if(tmp[i] > tmp[i-1] && tmp[i] > tmp[i+1])
            {
                if(flag)
                {
                    printf("%d", i);
                    flag = false;
                }
                else
                    printf(" %d", i);
            }
            else if(tmp[i] < tmp[i-1] && tmp[i] < tmp[i+1])
            {
                if(flag)
                {
                    printf("%d", i);
                    flag = false;
                }
                else
                    printf(" %d", i);
            }
        }
        if(tmp[m-1] > tmp[m-2] || tmp[m-1] < tmp[m-2])
            if(flag)
            {
                printf("%d", m-1);
                flag = false;
            }
            else
                printf(" %d", m-1);
        printf("\n");
    }    
    return 0;

猜你喜欢

转载自blog.csdn.net/mch2869253130/article/details/85408182