HDU2019 数列有序!

Problem Description
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。

Input
输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。

Output
对于每个测试实例,输出插入新的元素后的数列。

Sample Input
3 3 1 2 4 0 0

Sample Output
1 2 3 4

各种方案中,一边输入数据,一边输出数据,并且在适当位置输出m的做法,应该是优选方案。因为这样做,省去了数组,没有使用额外空间。

/* HDU2019 数列有序! */
 
#include <stdio.h>
 int main()
{
    int n, m, val, i;
 
    while(scanf("%d%d", &n, &m) != EOF) {
        if(n == 0 && m == 0)
            break;
 
        if(n == 0) {
            // n=0时,只需要输出m
            printf("%d\n", m);
        } else {
            // 读入n个数据,同时输出数据,并且在适当位置输出m
            int flag = 1;
            for(i=0; i<n; i++) {
                scanf("%d", &val);
 
                if(flag && val >= m) {
                    if(i == 0)
                        printf("%d", m);
                    else
                        printf(" %d", m);
                    flag = 0;
                }
 
                if(i>0 || !flag)
                    printf(" ");
                printf("%d", val);
            }
            if(flag)
                printf(" %d", m);
            printf("\n");
        }
    }
 
    return 0;
}
发布了94 篇原创文章 · 获赞 193 · 访问量 5596

猜你喜欢

转载自blog.csdn.net/weixin_45884316/article/details/104110245