2011-08-06 45 views
0

我得到RUN FAILED (exit value 1, total time: 493ms)。我明白了,当我尝试检查一个向量具有从一个数组中的一个元素:std :: find()为一个向量的错误

程序的完整代码:

#include <stdio.h> 
#include <iostream> 
#include <vector> 
#include <algorithm> 

using namespace std; 

#define TESTING_FILE_IN 
//#define TESTING_FILE_OUT 
#define DEBUG 
//#define SHOW_TIMING 

vector<int> cycles; 
int permutation[1001]; 

/* 
* 
*/ 
int main() { 

    #ifdef TESTING_FILE_IN 
    freopen("in.txt", "r", stdin); 
    #endif 

    int ind, startCycle, n, count, elemProc; 

    scanf("%d", &n); //Number of elements in the permutation 

    for (int i = 0; i < n; i++) { 
     cin >> permutation[i]; 
    } 

    // Calculate cycles 
    startCycle = 1; 
    while (true) { 
     cycles.push_back(ind + 1); 
     elemProc++; 
     ind = permutation[ind] - 1; 
     if (ind == startCycle) { 
      cycles.push_back(startCycle); 
      cycles.push_back(-1); 
      count++; 
      for (int i = 0; i < n; i++) { 
       if (find(cycles.begin(), cycles.end(), permutation[i]) == cycles.end()) { 
        startCycle = permutation[i]; 
        break; 
       } 
      } 
     } 
     if (elemProc == n) 
      break; 
    } 

    cout << count << endl; 
    for (int i = 0; i < cycles.size(); ++i) { 
     if (cycles[i] != -1) 
      cout << cycles[i] << " "; 
     else 
      cout << endl; 
    } 

    return 0; 
} 

当我评论了一段代码,做搜索,它建立并运行良好。希望你能帮助我。提前致谢。

回答

1

你可能会认为局部变量自动具有零初始值当你定义之前给ind的初始值。事实并非如此。 对于没有初始值设定项的内建类型的非静态局部变量,其初始值可以是任何东西

 v----you should initialize these local variables 
    int ind, startCycle, n, count, elemProc; 

您可以将它们定义为

int ind = 0, startCycle = 0, n = 0, count = 0, elemProc = 0; 
1

好像你不使用它作为一个指标

ind = permutation[ind] - 1; 
+0

感谢它帮助! –