int main(void) { while(scanf("%d%d",&n,&m)) { if(n==0&&m==0) break; scanf("%d%d",&x,&y); for(int i=0; i<n; i++) { scanf("%s",&str[i]); } solveA(m,n,y); //y代表宽度 reserveB(m,n); int total=solveB(n,m,x); //x代表高度 if(x!=y) { reserveA(m,n); solveA(n,m,y); reserveB(n,m); total+=solveB(m,n,x); } printf("%d\n",total); //free memory } return 0; }
void runTests(T *results, T t0, T I, T A, char numTest) { // Initialize an "x" value for each simulation T xA=results[0], xE=results[1], xRK=results[2], xRD=results[3]; // Variables for determining error in the simulations T diffE=(xA-xE), diffRK=(xA-xRK), diffRD=(xA-xRD); // Pre-computed values used in simulations T C, D; // Time T t = t0; // The data file and its name FILE *output; char *fileName = malloc(sizeof(char)*14); // Copy the simulation number into the appropriate place // and open the file if (sizeof(T)==4) strcpy(fileName,"./data/32/dat_.out"); else strcpy(fileName,"./data/64/dat_.out"); fileName[13]=numTest; output=fopen(fileName,"w"); // Pre compute these values D = I/A; C = xA-D; do { // Solve analytic first to keep simulations synchronized xA = solveA(A, D, C, t); diffE = fabs(xA-xE); diffRK = fabs(xA-xRK); diffRD = fabs(xA-xRD); // Print the output to a file fprintf(output, "%lf \t %lf \t %lf \t %lf \t %lf \t %lf\t %lf \t %lf\n", t, xA, xE, xRD, xRK, diffE, diffRK, diffRD); // Run the three numerical simulations xE = solveE(xE, I, A); xRK = solveRK(xRK, I, A); xRD = solveRD(xRD, A, D); // Advance time t += DT; } while (t<=T_MAX+DT); // Put the final results into the array, close the file, and return results[0]=xA; results[1]=xE; results[2]=xRK; results[3]=xRD; fclose(output); return; }
int main() { printf("%d\n", special(3)); char op; printConsole(&op); if(op == 'a') { sieveBuild(); vector answer; answer = solveA(); printf("Task (a):\n"); printArray(answer); } else { printf("Task (b):\n"); vector v; v = readArray(); vector ans; ans = solveB(v); printArray(ans); } return 0; }
int main(int argc, char **argv) { //*****************************SET PARAMETERS************************************************* Parameters params(argc, argv, 0); Parameters params2(argc, argv, 1); //******************************************************************************************** //**********************READ DATA AND MAKE SOLUTION******************************************* Solution* sol = constructSolution(params); preprocesData(sol); Solution* sol2 = constructSolution(params2); preprocesData(sol2); //********************************************************************************************* //*****************************SET PARAMETERS************************************************* if(sol->getNumberOfProcesses() * sol->getNumberOfMachines() <= 100 * 1000) { params2.delta = params.delta = 40; params2.nmb_iters_bpr = params.nmb_iters_bpr = 300; params2.nmbRanges = params.nmbRanges = 7; params2.rangeLength = params.rangeLength = sol->getNumberOfProcesses() / params.nmbRanges; } else { params2.nmb_iters_bpr = params.nmb_iters_bpr = 100; params2.nmbRanges = params.nmbRanges = 5; params2.rangeLength = params.rangeLength = sol->getNumberOfProcesses() / params.nmbRanges; params2.numberOfBestProcessesToConsiderShiftSwap = params.numberOfBestProcessesToConsiderShiftSwap = 3; params2.nmbLoops = params.nmbLoops = 2; if(sol->getNumberOfProcesses() * sol->getNumberOfMachines() >= 20000 * 2000) params2.nmbLoops = params.nmbLoops = 1; } params2.seedValue = params.seedValue + 1000; //******************************************************************************************** if(sol->getNumberOfProcesses() * sol->getNumberOfMachines() <= 100 * 1000) // A instances solveA(params, sol, params2, sol2); else // B instances solveB(params, sol, params2, sol2); long timeToSleep = params.time_limit - (time(0) - params.programStartTime) - 3; if (timeToSleep < 0) timeToSleep = 0; sleep(timeToSleep); // Read Solutions From Files And Write a better one sol->setOriginalLoadCostWeights(); sol2->setOriginalLoadCostWeights(); //cout << " sol->solutionFilename " << sol->solutionFilename << endl; //cout << " sol2->solutionFilename " << sol2->solutionFilename << endl; //cout << " sol->getCost() " << sol->getCost() << endl; //cout << " sol2->getCost() " << sol2->getCost() << endl; readSolutionFromFile( sol, sol->solutionFilename); readSolutionFromFile(sol2, sol2->solutionFilename); //cout << " after sol->getCost() " << sol->getCost() << endl; //cout << " after sol2->getCost() " << sol2->getCost() << endl; if ((sol->getCost() < sol2->getCost()) && (sol->checkConflict(false))) sol->writeToFile(params.solution_filename); else sol2->writeToFile(params.solution_filename); //remove solution files ostringstream oss1(""); oss1 << "rm " << sol->solutionFilename; system(oss1.str().c_str()); ostringstream oss2(""); oss2 << "rm " << sol2->solutionFilename; system(oss2.str().c_str()); //*****************************************FILES (REMOVE THIS PART)******************************************************** /*fstream fileResults("results", ios::out | ios::app); fileResults << setw(5) << params.seedValue << setw(30) << params.data_filename << setw(20) << sol->getCost() << setw(20) << sol2->getCost() << setw(20) << *(params.best_objective) << setw(15) << time(0) - params.programStartTime << endl; // running times fstream fileRunnungTimes("runnung_times", ios::out | ios::app); fileRunnungTimes << setw(5) << setw(30) << params.data_filename << setw(20) << *(params.best_objective) << setw(20) << time(0) - params.programStartTime << endl; // check solution with official checker ostringstream oss(""); oss << "./checker " << params.data_filename << " " << params.initial_assignment_filename << " " << params.solution_filename; oss << " >> checkerFile "; system(oss.str().c_str()); */ //************************************************************************************************************************* return 0; }