求助一道校内题:隐藏的最大整数
  • 板块学术版
  • 楼主liuzimingc
  • 当前回复9
  • 已保存回复9
  • 发布时间2021/2/7 20:37
  • 上次更新2023/11/5 03:35:03
查看原帖
求助一道校内题:隐藏的最大整数
421781
liuzimingc楼主2021/2/7 20:37

rt,校内题,总是 9191 分,真的是佛掉了……

题目描述
今天是个好日子,整数小伙伴们又一起出来聚会了。大家商议决定:今天玩捉迷藏! 玩法很简单,就是把藏在一个长长的字符串中(任何两个人都不会并排藏在一起)数字伙伴找出来。而且,因为伙伴们太多,只找到此次藏起来的最大的那个伙伴就可以了。并且,大家一致同意,让“1”做第一个找人的人——当然,事先,他并不知道到底有哪些伙伴藏起来了……
游戏开始了。“1”是一个很聪明的人,很快,他就把最大的那个伙伴找出来了……
如果你是“1”,你能写个程序来解决这件事情么?

输入
只有一个字符串,这里面藏有很多的整数小伙伴。

输出
只有一个整数,表示藏在其中的最大的那个整数小伙伴的位置(整数第一个数字在原串中的位置)。

样例输入
*((*-a32AB342+//32143abAA

样例输出
17

提示
这个串中共藏有32、342和32143三个小伙伴,其中32143是最大的,它在原来的串中的位置是17。

我的 91 分代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<map>
using namespace std;
#define ll long long
bool bigger(string a,string b){
    if (a.length()!=b.length()) return a.length()>b.length();
    return a>b;
}
int main(){
    string a,num="",ansn="0";
    int ansk=-1,k;
    getline(cin,a);
    a+=' ';
    for (int i=0;i<min(256,int(a.length()));i++){
        if (a[i]>='0' && a[i]<='9'){
            num+=a[i];
            if (!(a[i-1]>='0' && a[i-1]<='9')) k=i+1;
        }
        else{
            if (bigger(num,ansn)){
                ansn=num;ansk=k;
            }
            num="";
        }
    }
    cout<<ansk;
    return 0;
}

真的不知道错哪儿了,求助各位大佬,谢谢!!!

2021/2/7 20:37
加载中...