void HungarianMatrix<T>::replaceZeros() { // step 4 int row = -1, col = -1; bool done = false; while (!done) { findZero(row, col); if (row = -1) { done = true; changeMatrix(); } else { matrix[row][col].state = Node::SECONDSTATE; if (starInRow(row)) { findStarInRow(row, col); check_rows[row] = 1; check_column[col] = 0; } else { done = true; path_col0 = col; path_row0 = row; csaz(); } } } }
int main(void) { init_IO(); init_RTC(); while(1) { if (~PIND & BUTSHOW) { showTime(); } if (showTimeFlag) { showTimeFlag = 0; showTime(); } if (~PIND & BUTHOUR) { incHours(); showHours(); } if (~PIND & BUTMIN) { incMinutes(); showMinutes(); } } while(1) { // twiddle(); //readInput(); findZero(); findZero(); findZero(); _delay_ms(1000); showTime(); /* PORTC |= 1<<PC4; _delay_ms(200); PORTC &= ~(1<<PC4); _delay_ms(200); */ } }
void Sudoku::fillBlank(){ int i,j,zero,next;//zero:現在要填的格(0~80),next:再下一格要填的 zero = findZero(); for(i=0;i<9;i++){ answerBoard[zero]=i+1; if(check_answer(zero)==false){ continue;//不用更換記號因為繼續迴圈後會往更大的數字嘗試 } else{ next = findZero(); if(next == -1 && ansCount <= 1){ ansCount++; for(i=0;i<81;i++){ keepAns[i]=answerBoard[i]; } } else if(next == -1 && ansCount > 1){ cout << "2" << endl; return; } else{ fillBlank(); } } } if(ansCount > 1){ return; } for(i=80;i>=0;i--){ if(answerBoard[i]!=sudokuIn[i]){ answerBoard[i] = 0; break; } } };
int FillMatrix(){ int row, col, num; if (!findZero(&row,&col)) return 1; for (num=1;num<=9;num++){ if (canPlace(row, col, num)){ mat[row][col] = num; if (FillMatrix()) return 1; mat[row][col] = 0; } } return 0; }
Coords OneDRootFinder::retZeros() { std::vector<double> signs,coords; Coords r(3,0); r[0] = -100000.; signs.push_back(pots_->operator()(r,t0_)); coords.push_back(r[0]); for (int i=0; i<100; ++i) { r[0]=-50. + i; signs.push_back(ip_+pots_->operator()(r,t0_)); coords.push_back(r[0]); } r[0] = 100000; signs.push_back(ip_+pots_->operator()(r,t0_)); coords.push_back(r[0]); zeroPts crossPts; crossing(signs, coords, crossPts); double zero=0.; PotDouble f(pots_, ip_, t0_); foreach(dPair d, crossPts) { double retZero = findZero(d, f); if (std::abs(retZero) >= std::abs(zero)) zero = retZero; }
unsigned int getFreeInodeNumber(SUPER_BLOCK * superBlockP) { unsigned int offset = findZero(superBlockP->iBitMap, getInodeBitMapByteCount(superBlockP)); writeBitMap(superBlockP, dataFp); return offset; }
void showNumber(uint8_t num) { findZero(); for (uint8_t i=0; i<num; i++) { twiddle(); } }