zoukankan      html  css  js  c++  java
  • OpenJudge计算概论-找最大数序列

    /*=====================================
    找最大数序列
    总时间限制: 1000ms 内存限制: 65536kB
    描述
    输入n行(n 不大于 30),每行不超过100个无符号整数,无符号数不超过4位。请输出最大整数以及最大整数所在的行号(行号从1开始单调递增)。如果该数据在多个行中出现,则按从小到大输出相应行号,行号之间以逗号间隔。
    输入
    n和之后的n行数据
    输出
    第一行:最大整数;
    第二行:最大整数所在的行编号,逗号间隔。
    样例输入
    6
    1,3,5,23,6,8,14
    20,22,13,4,16
    23,12,17,22
    2,6,10,9,3,6
    22,21,20,8,10
    22,1,23,6,8,19,23
    样例输出
    23
    1,3,6
    
    解析:
    这个题目主要需要解决输入和输出的问题。
    输入:
    那n行数据不需要用数组来存储。输入时每次输入一个数和一个字符类型的逗号。
    判定输入的字符是否是逗号来决定是否该结束这一行的输入。 
    但是要注意这样一来,可能每一行的最后一次 输入需要特别处理。 
    
    记录最大值所在的行要用一维数组。
    但是在记录最大值所在行时必须注意:
    新发现的最大值与原最大值相等时,要检查上一次存储的最大值的行与本次需
    要存储的最大值的行是否在同一行。 假如真在同一行则需要忽略当前发现的
    这个最大值。 
    ======================================*/
    #include<stdio.h>
    int main()
    {
        int n,i,a[31];
        int max=-1,t,len=0;
        char ch;
        int first;
        freopen("5.in","r",stdin);
        scanf("%d",&n);
        getchar();
        for(i=0;i<n;i++)
        {
            scanf("%d%c",&t,&ch);
            while(ch==',')
            {
                if(t>max)//发现新的最大值 
                {
                    max=t;//记录最大值 
                    len=0;//发现新的最大值,要重置数组下标 
                    a[len]=i;//记录最大值的行号 
                }
                else if(max==t)
                {
                    if(i!=a[len])//确保同一行里面相同大小的最大数多次出现也只记录一次行号 
                    {
                        len++;//下标前移一个单位 
                        a[len]=i;//记录最大值的行号
                    }
                }
                ch=' ';//清空ch的值 
                scanf("%d%c",&t,&ch);
            }/**/
            if(t>max)
            {
                   max=t;
                   len=0;
                   a[len]=i;
            }
            else if(max==t)
            {
                   if(i!=a[len])
                {
                    len++;
                      a[len]=i;
                   }
            }
        }
        printf("%d
    ",max);
        first=1;
        for(i=0;i<=len;i++)
        {//输出行号时注意:题目要求行号从1开始计算。 
            if(first)
            {
                printf("%d",a[i]+1);
                first=0;
            }
               else printf(",%d",a[i]+1);
        }
        printf("
    ");
        return 0;
    }
  • 相关阅读:
    python函数
    python正则表达式
    FileStorage
    dietpi请暂时不要升级为jessie
    不从SD卡启动树莓派2
    树莓派2系统DietPi简单安装配置使用介绍
    树莓派笔记之使用netselect选择最快Raspbian软件源
    树莓派系统介绍:DIetPi
    【翻译】树莓派2:关闭无线网卡电源管理功能
    树莓派2安装使用小米WIfi(360 小度 腾讯wifi)
  • 原文地址:https://www.cnblogs.com/huashanqingzhu/p/3474575.html
Copyright © 2011-2022 走看看