2011-08-06 12 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に初期値を与えないようにあなたがそれらを定義するときに、ローカル変数は自動的にゼロの初期値を持っていると思うかもしれないようです。そうではありません。 イニシャライザを持たないbuild-inタイプの非静的ローカル変数の場合、初期値はです。

 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

感謝として、それらを定義することができます! –

関連する問題