HDU2019 数列有序!

【题目】

HDU2019 数列有序!_第1张图片

【思路】先判断要插入的序列是否又元素,没有的话将m直接输出即可;否则,将m与序列第一个元素进行比较,若小于则将m作为第一个元素,其他元素都向后移;若大于则依次比较,大于某个元素则将某个元素的索引值赋给index作为m最后的索引,并将数组第index个元素到最后一个元素都向后移即可。

【代码】AC的C++代码如下:

#include 
using namespace std;
int main()
{
    int n,m;
    int *a;
    int index;
    while (cin >> n >> m)
    {
        if (n == 0 && m == 0)
            break;
        if (n == 0) //若序列没有整数时候直接输出m
            cout << m << endl;
        index = 0;
        a = new int[n + 1];
        for (int i = 0;i < n;i++)
        {
            cin >> a[i];
        }

        if (m <= a[0])
        {
            for (int i = n;i > 0;i--)
            {
                a[i] = a[i - 1];
            }
            a[0] = m;
        }
        else
        {
            for (int i = 0;i < n;i++)
            {
                if (m > a[i])
                {
                    index = i + 1;
                }
            }
            for (int j = n;j > index;j--)
            {
                a[j] = a[j - 1];
            }
            a[index] = m;
        }

        for (int i = 0;i <= n;i++)
        {
            if (i != n)
                cout << a[i] << " ";
            else
                cout << a[i] << endl;
        }

    }
    return 0;
}



你可能感兴趣的:(HDU题解,HDU题解)