void solve(int k, int l) { int i; if(k==n) { nsol++; if(n>6 && row[0]<n/2)nsol++; printsol(); return; } for(i=0;i<l;i++) { if(!col[i] && !diag1[i+k] && !diag2[k-i+MAXN]) { row[k]=i; col[i]++; diag1[i+k]++; diag2[k-i+MAXN]++; solve(k+1,n); col[i]--; diag1[i+k]--; diag2[k-i+MAXN]--; } } }
int main() { int price, i; for(i = 1; i <= SIZE; i++) { price = rodcut_dp(i); printf("Maximum price for length %d = %d\n", i, price); printsol(i); printf("\n"); } return 0; }
bool queen() { int sol[N][N] = { {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }; if(queen_util(sol,0)==1) { printf(" all queen placed"); printsol(sol); } else printf("queen not placed"); }
bool cycle(bool graph[V][V]) { int *path=(int*)malloc(V*sizeof(int)); //int path[V]; int i; for(i=1;i<V;i++) { path[i]=-1; } path[0]=0; if(cycle_util(graph,1,path)==0) { printf("sol doesnt exit"); return 0; } printsol(path); return 1; }