저는 Harvard CS50 온라인 PSET3 및 온라인 CS50 게임의 "won"기능에 문제가 있습니다."원"기능이 잘못되었습니다
함수는 4x4 그리드 퍼즐과 함께 잘 작동하지만 3 × 3
과 기능은 몇 가지 단계가 너무 일찍 3 × 3의 경우 true
를 반환합니다.
이 기능은 3x3 크기 게임의 경우 1에서 8, 4x4 크기 게임의 경우 1에서 15의 오름차순으로 배열을 조사해야하며 배열의 마지막 요소는 0입니다.
코드에 대한 나의 생각 프로세스는 처음에 카운터를 1로 설정하고 배열의 첫 번째 요소와 대조하여 확인하는 것입니다. 일치하는 경우 카운터를 1 씩 증가시키고 다음 요소에 대해 반복합니다.
카운터가 배열의 총 요소 수에 도달하면 true를 반환하고 카운터가 언제든지 해당 배열 요소와 일치하지 않으면 false를 반환합니다.
내가 잘못하고있는 것을 볼 수 있습니까? 사실
/**
* Returns true if game is won (i.e., board is in winning configuration)
* else false.
*/
bool won(void)
{
// TODO
int counter = 1;
for (int i=0; i < d; i++)
{
for (int j=0; j < d; j++)
{
if (board[i][j] == counter)
{
counter++;
}
if (counter == (d*d))
{
return true;
}
}
}
return false;
}
[최소, 완료 및 확인 가능한 예제] (https://stackoverflow.com/help/mcve)를 읽으십시오.이 코드가 모두 필요한 것은 아닙니다. – klutt
Klutt, 조언을 많이 주셔서 감사합니다, 나는 stackoverflow 및 코딩/CS에 처음 두렵다. 나는 코딩과 stackoverflow 코드를 배우게 될 것이다 :-) –
:'int board [DIM_MAX] [DIM_MAX];는 항상 9x9 행렬을 생성하고,'move()'함수는 실제 '채워진'행렬은 더 작습니다. – user3629249