Задать вопрос
@adam_carraway

Как распараллелить данный код openmp?

#include<iostream>
#include <sys/time.h>
#include <cmath>
#include "omp.h"

using namespace std;

int const N = 4;
int X[N]; 
long count1;


bool Check(int K, int M) 
{
	int i = 0;
	while ((i< K) && (M != X[i]) && (abs(K - i) != abs(M - X[i]))) i++;
	return (i == K);
}

void MainProc(int k)
{
int m;
		for (m=0; m<N; m++)

			if (Check(k, m))
			{
				
				X[k] = m;

				if (k == (N - 1)) 
				{
					count1++; 
				}
				MainProc(k + 1); 
	}
}


int main() 
{
	double iv;
	struct timeval st, et;
	gettimeofday(&st, NULL); 
	MainProc(0);
	gettimeofday(&et, NULL);
    iv = (et.tv_sec * 1.0e6 + et.tv_usec) - (st.tv_sec * 1.0e6 + st.tv_usec);
	setlocale(LC_ALL, "Russian");
	cout << "При N=" << N << " количество расстановок: " << count1 << endl<<endl;
	cout<<"Time: "<< iv / 1e6 <<"sec." << endl;
}
  • Вопрос задан
  • 44 просмотра
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы