我对这个问题有问题,我不知道我的代码有什么问题,任何帮助都可能是很好的,这里是问题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;
}发布于 2013-12-03 11:44:08
您的代码不适用于成员之间的距离增加的序列,但最小的距离不是1。请考虑以下输入:
3 5 10 11差异是5和6。第一次测试没有启动,因为它们确实不同。第二个测试也不会触发,因为6 == 5 + 1。但它仍然不是一个快乐的跳伞者。
发布于 2013-12-03 12:28:44
另一个问题是,您应该将输入读入到EOF。
正如输入规范所述:
每一行输入都包含一个整数n< 3000,后面跟着代表序列的n个整数。
你已经花了一段时间在你的算法和来自输入的进程编号上。现在,您的当前代码将只处理第一个输入。
https://stackoverflow.com/questions/20349974
复制相似问题