• HDU1106 排序


    问题链接HDU1106 排序

    问题简述:参见上述链接。

    问题分析这个程序的逻辑并不十分复杂,主要是字符串处理和数字字符串转整数的问题。

    程序说明转换后的整数需要排序,但这不是重点。排序使用库函数qsort()来实现。

    因为5被看作空格,需要注意的点有:

    1.开始的若干个5需要跳过去;

    2.最后的若干个5需要跳过去;

    3.字符串全部是5的时候,需要正确处理(俺就吃亏在这里,开始一直没有AC);

    4.中间的若干个5需要正确跳过去。

    程序中使用了标志flag5,来处理若干个5。

    数字串转整数的逻辑与atoi相同。

    本程序的优点在于逻辑清晰简洁。

    参见HDU1106 排序(解法二)。该程序更加简洁一些。

    AC的C语言程序如下:

    /* HDU1106 排序 */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int cmp(const void *a,const void *b)
    {
        return *(int*)a - *(int*)b;
    }
    
    int main(void)
    {
        char figure;
        int val=0, values[2000], count, flag5=1, i;
    
        while(scanf("%c", &figure)!=EOF) {
            if(figure == '
    ') {
                if(flag5 == 0)
                    values[count++] = val;
    
                if(count > 0) {
                    qsort(values, count, sizeof(values[0]), cmp);
    
                    for(i=0; i<count-1; i++)
                        printf("%d ", values[i]);
                    printf("%d
    ", values[count-1]);
                }
    
                val = 0;
                count = 0;
                flag5 = 1;
            } else if(figure == '5') {
                if(flag5 == 0)
                    values[count++] = val;
    
                val = 0;
                flag5 = 1;
            } else {
                val = val * 10 + figure - '0';
    
                flag5 = 0;
            }
        }
    
        return 0;
    }


  • 相关阅读:
    团队开发冲刺第二十天
    团队开发冲刺第十九天
    第十六周进度总结
    学期课后个人总结
    用户场景分析
    第十五周进度总结
    对正在使用的输入法进行评价
    java中实现客户姓名添加和显示
    指定查找区间,查找学生姓名并显示是否修改成功
    linux下如何修改文件的权限chmod
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564871.html
Copyright © 2020-2023  润新知