2013-04-18 3 views
0

그래서 저는 스도쿠 퍼즐을위한 숫자를 생성하는 함수를 작성하려고했습니다. 이것이 그 모양입니다.하나의 숫자는 한 번만 표시됩니까?

마지막 줄에서 길을 잃었습니다 ... 한 행과 한 열에 하나의 숫자 만 나타나는지 어떻게 확인할 수 있습니까?

void generator (int row, int col){ 

    for (int i=0; i<9; i++){ 
     int randNum= (1+rand()%9); 
     for (int j=0; j<i; j++){ 
      A[i][j]=randNum; 
      //check if one number only appears once. 
     } 

    } 
} 

답변

0

각 난수를 벡터에 추가합니다. 그런 다음 각 숫자가 생성 된 후 이미 존재하는 값을 확인하기 위해 모든 벡터 멤버를 반복합니다.

2

완전히 잘못하고 있습니다.

부터 시작하는 규칙에 따라 스도쿠를 작성하면됩니다.

유효한 Sudoku를 얻은 후에 임의의 순열을 사용하여 숫자를 임의로 전환하십시오.

이것은 꽤 복잡한 문제입니다 (채워진 보드뿐만 아니라 실제 스도쿠 생성을 포함하는 경우). 그리고 당신은 그것을 과소 평가할 가능성이 큽니다.

+0

감사합니다. 하지만 무작위 순열 부분은 어떻게할까요? – sis007

+0

@ sis007 많은 옵션이 있습니다. 당신은'random_shuffle'을 사용할 수 있습니다. http://www.cplusplus.com/reference/algorithm/random_shuffle/ –