您的位置:首页 > 运维架构

AC日记——找最大数序列 openjudge 1.9 10

2016-12-03 08:44 483 查看

10:找最大数序列

总时间限制: 1000ms 内存限制: 65536kB描述
输入n行,每行不超过100个无符号整数,无符号数不超过4位。请输出最大整数以及最大整数所在的行号(行号从1开始)。如果该数据在多个行中出现,则按从小到大输出相应行号,行号之间以一个逗号分开。

输入一行输入一个正整数n(n <= 30)。
之后的n行,每行包含不超过100个无符号整数,整数之间以一个逗号分开。输出第一行:最大整数;
第二行:最大整数所在的行编号,逗号间隔。样例输入
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


思路:

  模拟不解释;

来,上代码:

#include<map>
#include<set>
#include<queue>
#include<stack>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;

int n,if_Z,num[31][100],now__=0,num_num[31],maxn=0;
int ans_there[31],ans_num=0;

char word;

inline void read_int(int &now_001)
{
now_001=0,if_Z=1;word=getchar();
while(word<'0'||word>'9')
{
if(word=='-') if_Z=-1;
word=getchar();
}
while(word<='9'&&word>='0')
{
now_001=now_001*10+(int)(word-'0');
word=getchar();
}
now_001*=if_Z;
}

void read_all()
{
int now_s=0;
for(int now_002=1;now_002<=n;now_002++)
{
word=getchar();
now__=0;
bool if_break=false;;
while(word!='\n')
{
int now_num=0;
while(word<'0'||word>'9')
{
if(word=='\n')
{
if_break=true;
break;
}
word=getchar();
}
if(if_break) break;
while(word<='9'&&word>='0')
{
now_num=now_num*10+(int)(word-'0');
word=getchar();
}
num[now_002][++now__]=now_num;
num_num[now_002]=now__;
}
}
}

void find()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=num_num[i];j++)
{
maxn=max(maxn,num[i][j]);
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=num_num[i];j++)
{
if(maxn==num[i][j])
{
ans_there[++ans_num]=i;
break;
}
}
}
}

void printf__()
{
printf("%d\n%d",maxn,ans_there[1]);
for(int i=2;i<=ans_num;i++) printf(",%d",ans_there[i]);
printf("\n");
}

int main()
{
read_int(n);
read_all();
find();
printf__();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: