1

境界のある反復的な順列を含む C++ コードがあります。私の問題は、作成された順列の要素数を示す 2 つのベクトル (プロセス z という名前) (順列のインデックスを表す ColIdx を持つ 1 次元ベクトル) と、順列の各要素をリストする別のベクトル (2 次元ベクトル) を返すことです。

void permute (vector<int>& qcassgn, vector<int>& start, 
              int qcsize, int bound, int colIdx, 
              vector<int>& process, vector<vector< int >> &z){  
 int sum=0;
 for (int i=0; i< start.size(); i++) {
    sum+= start[i]; 
 }
 if (sum >= bound) {
    process[colIdx]= start.size();
    for (int n=0; n< start.size(); n++) {
       z[colIdx][n] = start[n] ;
       cout << start[n] << " " ;}
       cout << "\t" << process[colIdx] ;
       cout << "\t" << colIdx << "\n"; 
       return;         
    }

    for (int i= 0; i < qcsize; i++) {   
       vector<int> newStart(start);
       newStart.push_back(qcassgn[i]);
       permute (qcassgn, newStart, qcsize, bound, (colIdx+i), process, z); 
    }
  }

main() { 
  ...
  for (j=0; j< qcsize; j++) { 
    newarray[0]=result[j];
    permute(result, newarray, qcsize, counter[i][s], colIdx, process, z); 
  }
  ...
}

アイデアは機能しているようですが、私の colIdx は生成された順列の正しいインデックスを計算できません。正しい colIdx を計算できません。さらに、私の 2 次元ベクトルはベクトル範囲外エラーを出しました。-そのような表現の ColIdx のカウンターを説明する正しい方法は何ですか -2 次元ベクトルで範囲の問題を解決するにはどうすればよいですか。事前にThx

例: 結果配列=[2,3,4]、バインド=10

順列については正しい結果が書き込まれますが、そのインデックスと要素については書き込まれません。

[2 2 2 2 2]    5    1  
[2 2 2 2 3]    5    2  
[2 2 2 2 4]    5    3  
[2 2 2 3 2]    5    2 (I want it to be 4)  
[2 2 2 3 3]    5    3 (I want it to be 5)   
[2 2 2 4]      4    3 ... 
4

0 に答える 0