Exemplo n.º 1
0
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();
			}
		}
	}
}
Exemplo n.º 2
0
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);
*/
    }
}
Exemplo n.º 3
0
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;
		}
	}
};
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
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;
    }
Exemplo n.º 6
0
unsigned int getFreeInodeNumber(SUPER_BLOCK * superBlockP)
{
	unsigned int offset = findZero(superBlockP->iBitMap, getInodeBitMapByteCount(superBlockP));
	writeBitMap(superBlockP, dataFp);
	return offset;
}
Exemplo n.º 7
0
void showNumber(uint8_t num) {
    findZero();
    
    for (uint8_t i=0; i<num; i++) { twiddle(); }
}