OpenJudge计算概论-找最大数序列

简介: /*===================================== 找最大数序列 总时间限制: 1000ms 内存限制: 65536kB 描述 输入n行(n 不大于 30),每行不超过100个无符号整数,无符号数不超过4位。
/*=====================================
找最大数序列
总时间限制: 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\n",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("\n");
    return 0;
}

 

相关文章
|
存储 人工智能
Openjudge计算概论——数组逆序重放【递归练习】
/*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放。
988 0
|
人工智能 算法
OpenJudge计算概论-字符串排序
/*====================================================================== 字符串排序 总时间限制: 1000ms 内存限制: 65536kB 描述 参考整数排序方法,设计一种为字符串排序的算法,将字符串从小到大输出 输入 第一行为测试数据组数t, 后面跟着t组数据。
798 0
|
人工智能 Go
OpenJudge计算概论-单词排序
/*===================================== 单词排序 总时间限制:1000ms 内存限制: 65536kB 描述 输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字母顺序输出这些单词(即按照字符串中字母的ASCII码排序,区分大小写,当首字母相同时,比较第2个字母,依次类推),要求重复的单词只输出一次。
894 0
|
机器学习/深度学习 人工智能
OpenJudge计算概论-矩阵归零消减序列和
矩阵归零消减序列和 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个n*n的矩阵(3 1;x--) 24 { 25 //行的归零 26 for(i=0;i
1063 0
|
存储 人工智能 算法
Openjudge计算概论-求序列中的众数
/*===================================== 求序列中的众数 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个长度为N的整数序列 (不多于128个整数),每个整数的范围在[-10^52,10^52],计算这个序列的众数。
1007 0
|
人工智能
Openjudge计算概论-奇数单增序列
/*===================================== 奇数单增序列 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按增序输出。
1097 0
|
机器学习/深度学习
OpenJudge计算概论-求满足条件的3位数
/*======================================================================== 求满足条件的3位数 总时间限制: 1000ms 内存限制: 65536kB 描述 编写程序,按从小到大的顺序寻找同时符合条件1和2的所有3位数,条件为: 1.该数为完全平方数 2.该数至少有2位数字相同 例如,100同时满足上面两个条件。
1117 0
OpenJudge计算概论-求出e的值
/*======================================================================== 求出e的值 总时间限制: 1000ms 内存限制: 65536kB 描述 利用公式e = 1 + 1/1! + 1/2! + 1/3! + ... + 1/n! 求e 。
872 0
|
人工智能
OpenJudge计算概论-整数奇偶排序
/*===================================== 整数奇偶排序 总时间限制: 1000ms 内存限制: 65536kB 描述 输入10个整数,彼此以空格分隔 重新排序以后输出(也按空格分隔),要求: 1.先输出其中的奇数,并按从大到小排列; 2.然后输出其中的偶数,并按从小到大排列。
1035 0
OpenJudge计算概论-求分数序列和
/*======================================================================== 求分数序列和 总时间限制: 1000ms 内存限制: 65536kB 描述 有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和。
907 0