C ++ int board[8][8]
에서 다음과 같이 채워진 정사각형 배열 이있는 경우 :
0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0
1이 다른 1과 행, 열 또는 대각선을 공유하는지 확인하는 가장 짧은 방법은 무엇입니까?
편집 : 가장 짧은 것을 의미 할 때 가장 효율적이라고 말했습니다.
8 x 8 보드? 이것은 체스와 관련이있는 것 같습니다.
여기에 어떤 조각이 여왕에게 맞았는지 테스트하는 영리한 방법이 있습니다 (즉, 1이 다른 1과 행, 열 또는 대각선을 공유하는지 여부와 거의 동일 함).
bool CG_queen::move(File f_to, Rank r_to, File f_from, Rank r_from)
{
bool canMakeMove = false;
//Check to see if Queen is moving only by File or only by Rank.
//aka, only vertically or horizontally.
if ( f_from == f_to || r_from == r_to )
{
canMakeMove = true;
}
//Check to see if Queen only moves diagonally.
if ( abs(f_from - f_to) == abs(r_to - r_from) )
{
canMakeMove = true;
}
return canMakeMove;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다