需要你的帮助来解决这个cp问题

问题描述 投票:0回答:0

我正在尝试这个问题https://www.codechef.com/problems/LOSTMAX 厨师有一个盒子,里面排列着 N 个数字:A1,A2,...,AN。他的前面还有数字N,所以他知道里面有多少个数字。也就是说,盒子实际上包含 N+1 个数字。但是由于正在进行的 IOI,他兴奋不已,他开始拿着口袋里的盒子跳舞,N+1 的数字就乱七八糟了。所以现在,他已经不知道N+1个数中哪个是N,哪些是实际数了

他想找出N个数中最大的一个。帮他找到这个。

输入 输入的第一行包含一个整数 T,表示测试用例的数量。每个测试用例的描述如下。 接下来的 T 行中的每一行将包含 N 和 N 个数字,但不能保证 N 是第一个数字。 输出 对于每个测试用例,输出一行包含该测试用例中 N 个数字的最大值。

约束 1≤T≤100 1≤N≤50 1≤艾≤109 样本 1: 输入 输出 3个 1 2 1 3 1 2 8 1 5 1 4 3 2 1个 8个 4个 解释: 测试用例 1:

N = 2,数字为 {1, 1}。这 2 个数字中的最大值为 1,因此输出为 1.

测试案例2:

N = 3,数字为{1, 2, 8}。这 3 个数字中的最大值是 8,因此输出是 8.

测试案例3:

N = 5,数字为{1, 1, 4, 3, 2}。这 5 个数字中最大的是 4,因此输出是 4.

#include <bits/stdc++.h>
using namespace std;
long long int Stringtonum(string s)
{     long long  int d=0;
    for(int i=0;i<s.length();i++)
      {
          d=d*10+((int)s[i]-48);
      }
        return d;
}
int num_elements(string s)
{
    int c=0;
    for(int i=0;i<s.length();i++)
      {
          if(s[i]==' ')
            c++;
      }
      
      return c;
}

void carr(int n,string s,long long int *a)
{
    string d="";int j=0;
    for(int i=0;i<s.length();i++)
    {
        if(s[i]!=' ')
        {
            d=d+s[i];
           
        }
        else
        {
            int x=Stringtonum(d);
             
            a[j]=x;
            j++;
            d="";
        }
    }
    
}

int main() {
    int t;
    cin>>t;
    
    while(t--)
    {
        string s;
        getline(cin>>ws,s);
        s=s+" ";
        int n=num_elements(s);
        long long int a[n];
        carr(n,s,a);


        
        for(int i=0;i<n;i++)
        {
            if(a[i]==(n-1))
                a[i]=0;
        }
         sort(a,a+n);
         cout<<a[n-1]<<endl;
         

        
    }
    return 0;
}

一个测试用例给出写答案而另一个给出错误答案 你能帮助其他人提交的东西有什么问题正在实施相同的算法吗?

algorithm c++17 implementation
© www.soinside.com 2019 - 2024. All rights reserved.