We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
voidprintf_matrix(ints_rows,ints_columns,int**s){for(inti=0;i<s_rows;i++){for(intj=0;j<s_columns;j++){printf("%d ",s[i][j]);}printf("\n");}}intcompute_cost(ints_rows,ints_columns,int**s,int**s_){intres=0;for(inti=0;i<s_rows;i++){for(intj=0;j<s_columns;j++){res+=abs(s[i][j]-s_[i][j]);}}returnres;}intformingMagicSquare(ints_rows,ints_columns,int**s){// All 8 possible 3x3 magic squaresintmagic_squares[8][3][3]={{{8,3,4},{1,5,9},{6,7,2}},{{4,3,8},{9,5,1},{2,7,6}},{{4,9,2},{3,5,7},{8,1,6}},{{2,9,4},{7,5,3},{6,1,8}},{{2,7,6},{9,5,1},{4,3,8}},{{6,7,2},{1,5,9},{8,3,4}},{{6,1,8},{7,5,3},{2,9,4}},{{8,1,6},{3,5,7},{4,9,2}}};intmin_cost=-1;int**best_matrix=NULL;// Compare input matrix against all 8 magic squaresfor(intk=0;k<8;k++){int*magic_1D_pointer[3]={magic_squares[k][0],magic_squares[k][1],magic_squares[k][2]};int**magic_ptr=magic_1D_pointer;intcost=compute_cost(s_rows,s_columns,s,magic_ptr);if(min_cost==-1||cost<min_cost){min_cost=cost;best_matrix=magic_ptr;// Points to static memory, no need to free}}printf_matrix(s_rows,s_columns,best_matrix);returnmin_cost;}
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Forming a Magic Square
You are viewing a single comment's thread. Return to all comments →