隐藏的最大整数
时间限制: 1 Sec 内存限制: 16 MB
题目描述
今天是个好日子,整数小伙伴们又一起出来聚会了。大家商议决定:今天玩捉迷藏! 玩法很简单,就是把藏在一个长长的字符串中(任何两个人都不会并排藏在一起)数字伙伴找出来。而且,因为伙伴们太多,只找到此次藏起来的最大的那个伙伴就可以了。并且,大家一致同意,让“1”做第一个找人的人——当然,事先,他并不知道到底有哪些伙伴藏起来了……
游戏开始了。“1”是一个很聪明的人,很快,他就把最大的那个伙伴找出来了……
如果你是“1”,你能写个程序来解决这件事情么?
求解
首先寻找字符串中的所有整数,并存下每个整数第一位的位置
输入
只有一个字符串,这里面藏有很多的整数小伙伴。
输出
只有一个整数,表示藏在其中的最大的那个整数小伙伴的位置(整数第一个数字在原串中的位置)。
样例输入
*((*-a32AB342+//32143abAA
样例输出
17
提示
这个串中共藏有32、342和32143三个小伙伴,其中32143是最大的,它在原来的串中的位置是17。
#include<stdio.h>
#include<math.h>
#include<string.h>
struct ppppp
{
int sum;
int k;
} su[9999];
int main ()
{
for(int i=0; i<9999; i++)
su[i].sum=0;
char p[999999];
scanf("%s",p);
int n=strlen(p);
p[n]='*';
int sum=0;
int j=0;
int flag=0,k;
for(int i=0; i<=n; i++)
{
if(p[i]>='0'&&p[i]<='9')
{
if(flag==0)
{
flag=1;
k=i+1;
sum=sum+p[i]-'0';
su[j].k=k;
}
else
{
sum=sum*10+p[i]-'0';
}
}
else
{
if(sum!=0)
{
su[j].sum=sum;
j++;
sum=0;
flag=0;
}
else
{
sum=0;
flag=0;
}
}
}
int maxx=-100;
for(int i=0; i<j; i++)
{
if(su[i].sum>maxx)
{
maxx=su[i].sum;
k=su[i].k;
}
}
printf("%d",k);
return 0;
}