Я получаю эту ошибку при выполнении простой программы для реализации алгоритма быстрого объединения. Я не мог найти ничего плохого в фигурных скобках. Я разместил код ниже. Пожалуйста, просмотрите это.
#include <iostream>
#include <fstream>
#ifdef _WIN32
#define WINPAUSE system("pause")
#endif
#include <cstdio>
#include <ctime>
using namespace std;
class QuickUnionUF
{
private:
int arr[9000];
public:
QuickUnionUF()
{
for (int k = 0; k < 9000; k++)
arr[k] = k;
}
public:
int find_root(int i)
{
while (i != arr[i])
i = arr[i];
return i;
}
public:
bool connected(int p, int q)
{
if (find_root(p) == find_root(q))
return true;
else
return false;
}
public:
void union_function(int p, int q)
{
int i = find_root(p);
int j = find_root(q);
arr[i] = j;
}
};
int main()
{
clock_t start = clock();
//int id[9000];
//for (int i = 0; i < 9000; i++)
// id[i] = i;
const char* filename = "mine";
ifstream inFile(filename);
int p, q;
if (!inFile) {
cout << endl
<< "File cannot be opened " << filename << "\n";
return 1;
}
QuickUnionUF QU = QuickUnionUF();
int select;
while (!inFile.eof())
{
inFile >> p;
inFile >> q;
cout << "elemnets taken :" << p << " " << q << " ";
//cout << " " << p;// << " " << q;
if (QU.connected(p, q)) {
cout << "already connected \n";
continue;
}
else {
QU.union_function(p, q);
cout << "connectin" << p << " " << q << " \n";
}
}
inFile.close();
clock_t end = clock();
double time = ((double)(end - start)) / CLOCKS_PER_SEC;
cout << endl
<< "time " << time << endl;
cout << "\n";
return 0;
}
Задача ещё не решена.
Других решений пока нет …