私はこのコードを本から見ました。これは、クイックユニオンアルゴリズムについて語っています。しかし、私は2つのforループがどのように機能するかについてはあまり理解していません。誰もこのC++のループを私のために説明できますか?
#include <iostream>
using namespace std;
const int N = 10;
//
int main()
{
int i,j,p,q,id[N];
for(i = 0; i < N; i++) {
id[i] = i;
}
while (cin >> p >> q){
// how does these two for loops work?
for (i = p; i != id[i]; i = id[i]);
for (j = q; j != id[j]; j = id[j]);
if (i == j) continue;
id[i] = j;
cout << " " << p << " " << q << endl;
}
}
私は何か本から何かをコピーするには何かtypo''dと思われる。 –
@PhilMどのように?コンパイルしてコードを実行しただけでうまくいきます。 – SSD
@SSDロジックが間違っています。デバッガでステップ実行してみてください。 ** whileループの最初の反復で、** for **ループの内側の**ループはすべて繰り返されないことに気付くでしょう。bc 'id = {0,1,2,3,4,5,6,7 、8,9} '。しかし、その後、 'id' _might_が変更されました。つまり、**内部ループ** forループ**は実際に繰り返します。 –