有人可以告訴我這個程序有什麼問題嗎? 如果矢量數組滿足所有這些條件,則該想法是顯示「是」: 數組元素不按升序排序。 該數組包含不同的元素。 所有數組元素的值都應該在1到n之間(含)。 否則爲「否」。 當程序到達if(bSort)行時程序中止。 迭代器增量有什麼問題嗎?程序在使用矢量迭代器時中止
#include <iostream>
#include <string>
#include <bits/stdc++.h>
using namespace std;
std::string solve(vector <int> &a, int n) {
vector<int> visited (n);
int i=0;
for(std::vector<int>::iterator it = a.begin(); it != a.end(); ++it) {
i++;
if((it+1)!=a.end() && (*it > *(it+1)))
{
bSort = false;
}
if(std::find(visited.begin(), visited.end(), *it)!=visited.end())
{
return "No";
}
else
{
visited[i] = *it;
}
if(*it <= 0 || *it > n)
{
return "No";
}
}
if(bSort)
return "No";
else
return "Yes";
}
int main() {
int q;
cin >> q;
for(int a0 = 0; a0 < q; a0++){
int n;
cin >> n;
vector<int> a(n);
for(int a_i = 0; a_i < n; a_i++){
cin >> a[a_i];
}
std::string result = solve(a,n);
cout << result << endl;
}
return 0;
}
問題似乎與下面輸入唯一發生的事情:
1
30
18 8 24 20 7 17 5 9 26 21 25 12 11 15 30 13 19 16 22 10 14 1 3 29 23 2 6 28 4 27
如果您使用調試器來捕捉崩潰,它會告訴您什麼?你的代碼在哪裏發生?那麼所有涉及的變量的值是什麼?迭代器指向哪裏? –
'#include' - 不要這樣做。包含正確的頭文件。 –
PaulMcKenzie
關於[爲什麼我不應該#include?](https://stackoverflow.com/questions/31816095/why-should-i-not-include-bits-stdc-h) 。但是,當它與'使用名稱空間標準'一起使用時,代碼不僅包含整個標準庫,還將整個標準庫引入全局名稱空間,其中有數以萬計的標識符,其中一些非常常見,比如'swap'和'reverse',可能會與代碼中定義的標識符相沖突,以獲得意外的結果。 –
user4581301