예제 #1
0
void findLevels(int i, int k){
	int l = two(k-1) - 1;

	if (k > 1){
		findLevels(i, k-1);
		findLevels(i + l + 1, k-1);
	}

	level[i + l] = k;
}
예제 #2
0
ModeMenu::ModeMenu() :
	mExitClicked(false),
	mLevelIndex(0)
{
	findLevels();
	loadLevel();
}
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    findLevels();
}
예제 #4
0
int main(void){
	int i, j;

	scanf("%d", &K);
	N = (1<<K) - 1;

	for (i = 0; i < N; i++)
		scanf("%d", &labels[i]);

	findLevels(0, K);

	for (j = K; j > 0; j--){
		int fst = 1;
		for (i = 0; i < N; i++){
			if (level[i] == j){
				printf("%s%d", fst ? "" : " ", labels[i]);
				fst = 0;
			}
		}
		putchar('\n');
	}

	return 0;
}
예제 #5
0
int main(int argc, char** argv) {
    
    int i,j, leafSum=0;
    struct timeval start,end;
    
/*Original function generation 3-D points (x,y,z) that belong on the first 
octant of the unit sphere in three-dimentional space */
        generator();

    box = (Box*)malloc(sizeof(Box)); 
    if(box==NULL){
        exit(3);}
    
        gettimeofday(&start, NULL);
    
/*BEGINNING OF CALCULATIONS - INITIALIZATION OF THE ROOT */
    box[0].boxid = 1;
    box[0].level = 0;
    box[0].parent = 0;
    box[0].center[0] = 0.5;
    box[0].center[1] = 0.5;
    box[0].center[2] = 0.5;
    box[0].length = 1;
    box[0].start=0;
    box[0].n=N; 
    box[0].points = (int*)malloc(N*sizeof(int));
    for(i=0;i<N;i++){   
        box[0].points[i]=i;
    }
    for(i=0;i<26;i++){
        box[0].colleague[i]=0;
    }
    
/*MAIN THREAD BEGINS THREAD EXECUTING CALCULATING OCTREES!!*/
    checkBox(0);
    printf("\n\nTotal n measured in boxes = %d",totalPoints);
    
/*OPTIONAL - JUST FOR VERIFICATION*/  
    for(i=0;i<leafCounter;i++){
        leafSum+=leaf[i].n;    
    }
    printf("\nTotal n measured in leaves is %d",leafSum);
  
    gettimeofday(&end, NULL);
    divisionTime = ((end.tv_sec * 1000000 + end.tv_usec) -(start.tv_sec * 1000000 + start.tv_usec));
  
/*******FIND COLLEAGUES - PTHREADS VERSION*******/
 
    gettimeofday(&start, NULL);   
    remove("colleagues.txt");
    
    findLevels();
  
    findColleagues();
      
    gettimeofday(&end, NULL);
    colleaguesTime = ((end.tv_sec * 1000000 + end.tv_usec) -(start.tv_sec * 1000000 + start.tv_usec));

    createB();

    gettimeofday(&start, NULL);
    /*
    printf("\nSaving in files...");
    boxesFile();
    leavesFile();
    alphaFile();
    betaFile();
    timeFile();
    colleaguesFile();
    */    
    gettimeofday(&end, NULL);
    filesTime = ((end.tv_sec * 1000000 + end.tv_usec) -(start.tv_sec * 1000000 + start.tv_usec));
    
    printf("\n\nOctree Division time is %d",divisionTime);
    printf("\nColleagues finding time is %d",colleaguesTime);
    printf("\nSaving data in files time is %d",filesTime);
    printf("\nTotal calculation time is %d",divisionTime+colleaguesTime+filesTime);
    printf("\n\n***END OF PROGRAM***");
    
    return (EXIT_SUCCESS);
}