0
#include<iostream>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
int main (void)
{
int z,foo,t,n,k,i;
cin>>t;
while (t--)
{
vector<int> a;
vector<int> b;
cin>>n>>k;
z = n;
while (z--)
{
cin>>foo;
a.push_back(foo);
}
sort(a.begin(),a.end());
vector<int>::iterator it = a.begin();
vector<int>::iterator bt = a.begin();
while (bt != a.end())
{
bt = bt + (k-1);
foo = *bt - *it;
b.push_back(foo);
it++;
}
sort(b.begin(),b.end());
cout<<b[0]<<"\n";
}
return 0;
}
此代码接受的测试用例的数量,然后接受两个号码,然后采取了一系列数字的总数,并对其进行排序,取的k
的基础上,他们的差异,对它们进行分类,在一个新的载体拷贝和对它们进行排序并输出一个新元素。这个C++代码在给出分段错误时出了什么问题?
上面的代码给出了分段错误。
为什么* bt和* it? – Rustam 2014-10-11 05:47:05
你输入'k'是什么?保证'bt = bt +(k-1)'不发送'bt'超出范围的地方在哪里? – AnT 2014-10-11 05:49:25
您是否在调试器中运行代码以查找崩溃发生的位置? – Wyzard 2014-10-11 05:50:14