0
void generateSudoku(int sudoku[][C])
{
for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
{
sudoku[i][j] = generateRandNum(); //generate random number for all 2d array
while (sudoku[1][0] == sudoku[0][0] || sudoku[2][0] == sudoku[1][0] || sudoku[2][0] == sudoku[0][0]
|| sudoku[3][0] == sudoku[2][0] || sudoku[3][0] == sudoku[1][0] || sudoku[3][0] == sudoku[0][0])
sudoku[i][j] = generateRandNum();
while ( sudoku[i][1] == sudoku[i][0] || sudoku[1][1] == sudoku[0][1] || sudoku[2][1] == sudoku[1][1]
|| sudoku[2][1] == sudoku[0][1] || sudoku[3][1] == sudoku[2][1] || sudoku[3][1] == sudoku[1][1]
|| sudoku[3][1] == sudoku[0][1]) //index 1 to index 0
sudoku[i][j] = generateRandNum();
while ((sudoku[i][2] == sudoku[i][0]) || (sudoku[i][2] == sudoku[i][1]) || sudoku[1][2] == sudoku[0][2]
|| sudoku[2][2] == sudoku[1][2] || sudoku[2][2] == sudoku[0][2] || sudoku[3][2] == sudoku[2][2]
|| sudoku[3][2] == sudoku[1][2] || sudoku[3][2] == sudoku[0][2])
sudoku[i][j] = generateRandNum();
while ((sudoku[i][3] == sudoku[i][0]) || (sudoku[i][3] == sudoku[i][1]) || (sudoku[i][3] == sudoku[i][2])) //index 3 to index 2,1,0
sudoku[i][j] = generateRandNum();
}
}
}
스도쿠와 같이 각 열과 행마다 다른 난수로 2 차원 배열을 생성하는 것이 더 효율적이고 쉬운 방법이 있습니까? 코드가 작동하지만 실행 시간이 너무 길어 아마도 많은 루프가 원인 일 수 있습니다. 또한 나는 초심자 (1 학년 cs 학생)이므로 이것이 복잡한 알고리즘을 수행하는 방법을 모르기 때문에 내가 별개로 생각할 수있는 유일한 방법입니다 (예, 어리 석고 비효율적이며 잘못되었음을 알고 있습니다).행과 열 사이에 고유 번호가있는 2 차원 배열을 생성하려면 어떻게합니까?
편집 : generateRandNum :
int generateRandNum()
{
int randNum;
randNum = (rand() % 4)+1;
return randNum;
}
generateRandNum의 본문을 게시 할 수 있습니까? – Angen
메인 포스트에 게시 된 –
for 루프의 genRandNum은 시간 낭비입니다. 왜 그걸 가지고 있습니까? 이 함수는 하나의 숫자 만 반환하고 모두를 반환하지는 않습니다. – Angen