void traverseBFT(int g[GRAPHSIZE][GRAPHSIZE]){ int startingNode; printf("\n\tBreadth First Traversal:\n\tStarting Node: "); scanf("%d",&startingNode); VisitMark mark[GRAPHSIZE]; // to know which nodes to add List *Q = initQueue(); int i,j; for (i = 0; i < GRAPHSIZE; i++){ mark[i] = UNVISITED; // For starters, mark all nodes as UNVISITED } mark[startingNode] = VISITED; NQ(&Q,startingNode); while (!isEmpty(&Q)){ int temp = DQ(&Q); printf("%d ",temp); for (j = 0; j < GRAPHSIZE; j++){ if (g[j][temp] == 1){ if (mark[j] == UNVISITED){ mark[j] = VISITED; NQ(&Q,j); } } } } }
void BFS(int i) { printf("%d ", i); reach[i] = 1; myQueue *root = NULL; root = NQ(root,i); node *p = graph[root->value]; while (root != NULL) { p = graph[root->value]; root = DQ(root); while (p != NULL) { if (reach[p->vertex] == 0) { printf("%d ", p->vertex); reach[p->vertex] = 1; root = NQ(root,p->vertex); } p = p->next; } } }
void AA(void*u,Uint8*_,B L){u=u;while(L>0){B M=p&037777,s=p>>12,u=(s%R)[ l],J=(s%U)[b],w=0,a=0,n;A v,q,m,E=(0x2000-(p&017777))/8192e0f;v=q=0; #define EF_(x) F[w][1638##x+M #define EF(l,s,ms) ((s*ms+EF_(4)-l]*(1-ms))/2.f+EF_(3)]/2.f) #define FQ(s) (A)sin((0.12*pow(2,n/12.))*p*s) #define IZ(v,c) v*=v c?v:0; #define BF F[w][M]=F[w][M+16384]=q;v+=q;++w #define IP(n,x,y,z,c) if(n!=46){x}q=EF(y,q,z);c;BF; #define IS(s,c) if(q c s 0.75f)q=s 0.75f; #define NQ(x,a,m) n=x-(x>=97?121:65)+a;q=FQ(m); IP(u,NQ(u,12,1)m=FQ(1.01f);IZ(q,>6e-1)IZ(m,>6e-1)q+=m;q*=5e-1f*(E+1);,12288, 0.2f,;)for(;a<3;++a){char sn=(s%D)[a[r]];q=0;IP(sn,NQ(sn,12,0.25f)IZ(q,<0.3),
void traversePrim(int g[GRAPHSIZE][GRAPHSIZE]){ int startingNode; printf("\n\tBreadth First Traversal:\n\tStarting Node: "); scanf("%d",&startingNode); int i,j; List *Queue = initQueue(); VisitMark mark[GRAPHSIZE]; for (i = 0; i < GRAPHSIZE; i++){ mark[i] = UNVISITED; } int localMin; int closestNode; NQ(&Queue,startingNode); mark[startingNode] = VISITED; while (!isEmpty(&Queue)){ int temp = DQ(&Queue); printf("%d ",temp); localMin = 9999; closestNode = temp; for (j = 0; j < GRAPHSIZE; j++){ if (g[j][temp] > 0 && mark[j] == UNVISITED){ if (g[j][temp] < localMin){ localMin = g[j][temp]; closestNode = j; } } } if (closestNode != temp){ mark[closestNode] = VISITED; NQ(&Queue,closestNode); } } }
void NQ(vector<int>& state, int row){ int n = state.size(); if(row == n){ vector<string> res(n, string(n, '.')); for(int i = 0; i < n; i++){ res[i][state[i]] = 'Q'; } allRes.push_back(res); return; } for(int col = 0; col < n; col++){ if(isValid(state, row, col)){ state[row] = col; NQ(state, row + 1); } } }
void physics::energy() { const double aa=0,bb=a; FILE *F1,*F2; //typedef double (phizics::*pointer)(double); F1 = fopen ("F1.txt","w+b"); F2 = fopen ("F2.txt","w+b"); rez = (double*) malloc(n*sizeof(double)); E_for_table=new double[n]; int i; nq=NQ(); double sum_lambda=0; for (i=0;i<n;i++) { rez[i] = pow( ( (2.0*pow(a,3)/3.0) - (h/pow(2*m*q*E,0.5))*simpson1 (aa,bb) ),-1)*(2*pow(alpha,3)*h*h/(7*m*q*E))*pow(simpson2(aa,bb),2); fprintf(F2 ,"%5.51f\t %2.2f\n", rez[i],E); fprintf(F1 ,"%5.51f\t %2.2f\n", 1/lambda(E),E); //rez[i]+=e*field*fabs(1/lambda(E))*cos(360/teta*2*M_PI)-hw; //cos(teta)=1 //rez[i]=cos(teta*2*M_PI/360); //fprintf(F1 ,"%2.2f\t %2.2f\n", rez[i],E); sum_lambda=lambda(E); E+=0.01; E_for_table[i]=E; } fclose(F1); fclose(F2); //free (rez); E=0.1; }
int main() { struct Queue *Q = inializeQ(); NQ(Q,1); NQ(Q,2); NQ(Q,3); NQ(Q,4); NQ(Q,5); NQ(Q,6); printQ(Q); printf("\n[\t"); while(!isEmpty(Q)) { int data = DQ(&Q); printf("%d\t", data); } printf("]\t\n"); return 0; }
vector<vector<string> > solveNQueens(int n) { vector<int> state(n, -1); NQ(state, 0); return allRes; }
/* * Prim's approximated TSP tour * See also [Cristophides'92] */ static int findEulerianPath(TSP *tsp) { int *mst, *arc; int i, j, k, l, a; int n, *iorder, *jorder; DTYPE d; DTYPE maxd; DTYPE *dist; DTYPE *dis; jorder = tsp->jorder; iorder = tsp->iorder; dist = tsp->dist; maxd = tsp->maxd; n = tsp->n; if (!(mst =(int*) palloc((size_t) n * sizeof(int))) || !(arc =(int*) palloc((size_t) n * sizeof(int))) || !(dis =(DTYPE*) palloc((size_t) n * sizeof(DTYPE))) ) { elog(ERROR, "Failed to allocate memory!"); return -1; } // PGR_DBG("findEulerianPath: 1"); k = -1; j = -1; d = maxd; dis[0] = -1; for (i = 1; i < n; i++) { dis[i] = D(i, 0); arc[i] = 0; if (d > dis[i]) { d = dis[i]; j = i; } } // PGR_DBG("findEulerianPath: j=%d", j); if (j == -1) elog(ERROR, "Error TSP fail to findEulerianPath, check your distance matrix is valid."); /* * O(n^2) Minimum Spanning Trees by Prim and Jarnick * for graphs with adjacency matrix. */ for (a = 0; a < n - 1; a++) { mst[a] = j * n + arc[j]; /* join fragment j with MST */ dis[j] = -1; d = maxd; for (i = 0; i < n; i++) { if (dis[i] >= 0) { /* not connected yet */ if (dis[i] > D(i, j)) { dis[i] = D(i, j); arc[i] = j; } if (d > dis[i]) { d = dis[i]; k = i; } } } j = k; } // PGR_DBG("findEulerianPath: 3"); /* * Preorder Tour of MST */ #define VISITED(x) jorder[x] #define NQ(x) arc[l++] = x #define DQ() arc[--l] #define EMPTY (l == 0) for (i = 0; i < n; i++) VISITED(i) = 0; k = 0; l = 0; d = 0; NQ(0); while (!EMPTY) { i = DQ(); if (!VISITED(i)) { iorder[k++] = i; VISITED(i) = 1; for (j = 0; j < n - 1; j++) /* push all kids of i */ { if (i == mst[j]%n) NQ(mst[j]/n); } } } // PGR_DBG("findEulerianPath: 4"); return 0; }
/* * Prim's approximated TSP tour * See also [Cristophides'92] */ bool TSP::findEulerianPath() { Ids iorder(n); Ids mst(n); Ids arc(n); std::vector < double > dis(n); double d; #if 0 int n, *iorder, *jorder; DTYPE d; DTYPE maxd; DTYPE *dist; DTYPE *dis; jorder = tsp->jorder; iorder = tsp->iorder; dist = tsp->dist; maxd = tsp->maxd; n = tsp->n; if (!(mst = (int*) palloc(n * sizeof(int))) || !(arc = (int*) palloc(n * sizeof(int))) || !(dis = (DTYPE*) palloc(n * sizeof(DTYPE))) ) { elog(ERROR, "Failed to allocate memory!"); return -1; } #endif // PGR_DBG("findEulerianPath: 1"); size_t j(0); double curr_maxd = maxd; dis[0] = -1; for (size_t i = 1; i < n; ++i) { dis[i] = dist[i][0]; arc[i] = 0; if (curr_maxd > dis[i]) { curr_maxd = dis[i]; j = i; } } //PGR_DBG("findEulerianPath: j=%d", j); if (curr_maxd == maxd) { // PGR_DBG("Error TSP fail to findEulerianPath, check your distance matrix is valid."); return false; } /* * O(n^2) Minimum Spanning Trees by Prim and Jarnick * for graphs with adjacency matrix. */ for (size_t a = 0; a < n - 1; a++) { size_t k(0); mst[a] = j * n + arc[j]; /* join fragment j with MST */ dis[j] = -1; d = maxd; for (size_t i = 0; i < n; i++) { if (dis[i] >= 0) /* not connected yet */ { if (dis[i] > dist[i][j]) { dis[i] = dist[i][j]; arc[i] = j; } if (d > dis[i]) { d = dis[i]; k = i; } } } j = k; } //PGR_DBG("findEulerianPath: 3"); /* * Preorder Tour of MST */ #if 0 #define VISITED(x) jorder[x] #define NQ(x) arc[l++] = x #define DQ() arc[--l] #define EMPTY (l==0) #endif for (auto &val : jorder) { val = 0; } #if 0 for (i = 0; i < n; i++) VISITED(i) = 0; #endif size_t l = 0; size_t k = 0; d = 0; arc[l++] = 0; while (!(l == 0)) { size_t i = arc[--l]; if (!jorder[i]) { iorder[k++] = i; jorder[i] = 1; /* push all kids of i */ for (size_t j = 0; j < n - 1; j++) { if (i == mst[j] % n) arc[l++] = mst[j] % n; } } } #if 0 k = 0; l = 0; d = 0; NQ(0); while (!EMPTY) { i = DQ(); if (!VISITED(i)) { iorder[k++] = i; VISITED(i) = 1; for (j = 0; j < n - 1; j++) /* push all kids of i */ { if (i == mst[j]%n) NQ(mst[j]/n); } } } #endif //PGR_DBG("findEulerianPath: 4"); update(iorder); return true; }