早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C++编程题,求转换元素,帮帮新手给定一串整数数列,求出所有的递增和递解数列的转换元素.如:数列726983521可分为(7,2),(2,6,9),(9,8,3),(3,5),(5,2,1)五个子序列,称2,9,3,5为转换

题目详情
C++编程题,求转换元素,帮帮新手
给定一串整数数列,求出所有的递增和递解数列的转换元素.
如:数列 7 2 6 9 8 3 5 2 1 可分为(7,2),(2,6,9),(9,8,3),(3,5),(5,2,1)五个子序列,称2,9,3,5为转换元素.
输入
输入数据为多组数据,每两行为一个输入,其中第一行为数列整数个数N,第二行为数列中的N个整数.(当N为0时,结束输入)
输出
输出数据对应输入,每行给出每组数字的转换元素.
样例输入
97 2 6 9 8 3 5 2 151 2 3 2 10
样例输出
2 9 3 5 3
▼优质解答
答案和解析
//我这里相等也算递增
void ChangePoint()
{
    bool isup = true;
    bool isfirst = true;
    int currentNum = 0;
    int length = 0;
    int temp = 0;
    int inputNum[255];
    std::cin>>length;
    for(int i = 0; i < length; ++i)
    {
        std::cin>>inputNum[i];
    }
    if(length>2)
    {
        if(inputNum[0] > inputNum[1])
            isup = false;
        else
            isup = true;
        int index = 2;
        currentNum = inputNum[1];
        while(index!=length)
        {
            if(isup)
            {
                if(inputNum[index] < inputNum[index - 1])
                {
                    isup = false;
                    if(isfirst)
                    {
                        isfirst = false;
                        std::cout<                    }
                    else
                        std::cout<<" "<                }
            }
            else
            {
                if(inputNum[index] >= inputNum[index - 1])
                {
                    isup = true;
                    if(isfirst)
                    {
                        isfirst = false;
                        std::cout<                    }
                    else
                        std::cout<<" "<                }
            }
            ++index;

        }

    }
}