ACM Jolly Jumpers 2

时间:2013-12-03 11:31:52

标签: c++

我对这个问题有疑问我不知道我的代码有什么问题任何帮助都可能很棒这里是http://sharecode.ir/sections/problem/problemset/2175问题的链接 我在几个测试用例中对它进行了测试,但它现在可以正常工作

#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    vector <int> num;
    vector <int> num1;
    int n,temp,j=0;
    cin>>n;
    for(int i= 0 ; i<n ; i++)
    {
        cin>>temp;
        num.push_back(temp);
    }
    for(int i=0; i<num.size() ; i++)
    {
        if(i+1 < num.size())
        {
            num1.push_back(abs(num[i]-num[i+1]));
        }
    }
    for(int i=0 ; i<num1.size() ; i++)
    {
        if(i+1 < num1.size())
        {
            if(num1[i] == num1[i+1])
            {
                cout<<"Not jolly"<<endl;
                return 0;
            }
        }
    }
    sort(num1.begin(),num1.end());
    for(int i=0 ; i<num1.size() ; i++)
    {
        if(i+1 < num1.size())
        {
            if(num1[i]+1 != num1[i+1])
            {
                cout<<"Not jolly"<<endl;
                return 0;
            }
        }
    }
    cout<<"Jolly"<<endl;
}

2 个答案:

答案 0 :(得分:0)

您的代码不适用于成员之间距离增加的序列,但最小距离不是1.请考虑以下输入:

3 5 10 11

差异是5和6.第一次测试不会触发,因为它们确实不同。第二个测试也没有触发,因为6 == 5 + 1。但它仍然不是一个快乐的跳投。

答案 1 :(得分:0)

你遇到的另一个问题是你应该阅读输入直到EOF

正如输入规范所说:

  

每行输入包含一个整数n&lt; 3000后跟表示序列的n个整数。

你已经在算法上花了一些时间来处理来自输入的数字。 您当前的代码现在只处理第一个输入。