void do_mult(TMatrix_DCSR *A, int **_xadj, int **adjncy) { int size = A->size; int total = 0; int *a; int *xadj = (int*)malloc(sizeof(int)*(size+1)); if (!xadj) PRINT_ERROR_MESSAGE_AND_EXIT(ERROR_MEMORY_ALLOCATION); *_xadj = xadj; xadj[0] = 0; for (int step = 0; step <= 1; ++step) { if (step == 1) { a = (int*)malloc(sizeof(int)*total); if (!a) PRINT_ERROR_MESSAGE_AND_EXIT(ERROR_MEMORY_ALLOCATION); *adjncy = a; } for (int i = 0; i < size; ++i) { int cur = 0; for (int j = 0; j < size; ++j) { if (i == j) continue; int is_there = 0; for (int ci = A->row_ptr[i]; ci < A->row_ptr[i+1]; ++ci) { int cur_col = A->col_ind[ci]; if (in_row(A,j,cur_col)) { is_there = 1; break; } } if (!is_there && in_row(A,j,i)) is_there = 1; if (is_there) { if (step == 1) a[xadj[i] + cur] = j; cur++; } } if (step == 0) { total += cur; xadj[i+1] = total; } } } }
void do_orig(TMatrix_DCSR *A, int **_xadj, int **adjncy) { int size = A->size; int total = 0; int *a; int *xadj = (int*)malloc(sizeof(int)*(size+1)); if (!xadj) PRINT_ERROR_MESSAGE_AND_EXIT(ERROR_MEMORY_ALLOCATION); *_xadj = xadj; for (int step = 0; step <= 1; ++step) { if (step == 0) xadj[0] = total; if (step == 1) { a = (int*)malloc(sizeof(int)*total); if (!a) PRINT_ERROR_MESSAGE_AND_EXIT(ERROR_MEMORY_ALLOCATION); *adjncy = a; } for (int i = 0; i < size; ++i) { int cur = A->row_ptr[i+1] - A->row_ptr[i]; // copy cur elements if (step == 1) for (int j = A->row_ptr[i]; j < A->row_ptr[i+1]; ++j) a[xadj[i]+(j-A->row_ptr[i])] = A->col_ind[j]; for (int j = 0; j < size; ++j) { if (!in_row(A,i,j) && in_row(A,j,i)) { if (step == 1) a[xadj[i] + cur] = j; cur++; } } if (step == 0) { total += cur; xadj[i+1] = total; } } } for (int i = 0; i < size; ++i) qsort(&a[xadj[i]], xadj[i+1] - xadj[i], sizeof(int), compare); }
void main() { clrscr(); char pwd[]="bigmanani"; char ans[20]; cout<<"Enter password : "******"*"; } else break; } if(strcmp(ans,pwd)) { cout<<"\nIncorrect password."; getch(); exit(0); } int op; clrscr(); fout<<"main\n"; ifstream fin("sdk.txt"); // cout<<"Enter the puzzle row-wise (Use 0's for empty spaces) :\n"; for(int i=0;i<=8;++i) for(int j=0;j<=8;++j) { fin>>space[i][j].value; if(space[i][j].value==0) { for(int k=1;k<=9;++k) space[i][j].poss[k]=1; } else { for(int k=1;k<=9;++k) { if(k!=space[i][j].value) space[i][j].poss[k]=0; else space[i][j].poss[k]=1; } } } cout<<"Puzzle accepted. Starting Evaluation.\n"; //getch(); for(int e=1;;++e) { fout<<"Starting Evaluation "<<e<<"\n"; // getch(); for(i=0;i<=8;++i) { for(j=0;j<=8;++j) { int nop=0; cell_one_pos(i,j); int the_poss_val=0; cout<<"Evaluating space "<<i<<" "<<j<<"\n"; //getch(); if(space[i][j].value!=0) // already filled { cout<<"space "<<i<<" "<<j<<" is already filled.\n";//getch(); continue; } else cout<<"space "<<i<<" "<<j<<" is empty\n";//getch(); for(int k=1;k<=9;++k) { cout<<"Trying value "<<k<<"\n"; //getch (); if(!in_col(j,k)&&!in_row(i,k)&&!in_box(i,j,k)) // check conds { nop++; cout<<k<<" is a possible value.\n"; //getch(); space[i][j].poss[k]=1; the_poss_val=k; } else if(in_col(j,k)||in_row(i,k)||in_box(i,j,k)) { space[i][j].poss[k]=0; cout<<k<<" is not a possible value\n"; // getch(); } } if(nop==1) { space[i][j].value=the_poss_val; cout<<i<<" "<<j<<" ="<<the_poss_val<<"\n";// getch(); boxes_filled++; for(int d=1;d<=9;d++) { if(d!=the_poss_val) space[i][j].poss[d]=0; } } } } elim(0,0);elim(0,3);elim(0,6); elim(3,0);elim(3,3);elim(3,6); elim(6,0);elim(6,3);elim(6,6); rem_lin_pos(1133);rem_lin_pos(4769); rem_lin_pos(1436);rem_lin_pos(7193); rem_lin_pos(1739);rem_lin_pos(7496); rem_lin_pos(4163);rem_lin_pos(7799); rem_lin_pos(4466); cout<<"\nEvaluation "<<e<<" finished. A total of "<<boxes_filled<<" spaces have now been filled.\n"; Menu : cout<<"\n1.View the puzzle solved this far.\n"; cout<<"2.Continue Evaluation.\n"; cout<<"3.View the possibilities of a space. [row col]\n"; cout<<"4.Exit Program.\n"; cout<<"6.Elimination\n"; cout<<"7.Set Value. [row col val]\n"; cout<<"Choose an Option : "; cin>>op; if(op==1) { for(i=0;i<=8;++i) { for(j=0;j<=8;++j) { //if(space[i][j].value!=0) cout<<" "<<space[i][j].value; /* else { cout<<" {"; for(int g=1;g<=9;++g) { if(space[i][j].poss[g]) cout<<g; } cout<<"}"; } */ } cout<<"\n"; } } if(op==2) { unfilled(); continue; } if(op==3) { int i,j; cin>>i>>j; cout<<"Possibilities are : "; for(int k=1;k<=9;++k) { if(space[i][j].poss[k]==1) cout<<k<<" "; } } if(op==4) exit(0); if(op==5) { cout<<"Enter BIN : "; int bin; cin>>bin; double_down(bin); }