int main()
{
srand(time(NULL));
int a[9][9] = {0}, i, j, k, m;
for (i=0 ; i<9 ; i++)
for (j=0 ; j<9 ; j++){
a[i][j] = rand() %9+1; // ?쒕뜡?쇰줈 媛??앹꽦
for ( k=0 ; k<j ; k++)
if ( a[i][j] == a[i][k])
j--;
for ( m=0 ; m<i ; m++)
if ( a[i][j] == a[m][j])
j--;
}
for (i=0 ; i<9 ; i++)
for (j=0 ; j<9 ; j++){
printf("%d ", a[i][j]);
printf("\n");}
return 0;
}
가로하고 세로만 해봤는데 왜 이게 무한루프를 돌게 되는지 문제를 모르겠어요
Hit : 5279 Date : 2015/05/19 10:46
hogil123
해결하셨으려나 싶네요 . 3중 for문을 사용하셔서
중복값에 대한 처리를 하신거 같은데 3번째 for에서 j값 처리를 계속 해서 그래보이네요 .
현재 배열의 값을 가로행 , 세로행 검사를 하며 중복값이 있을시에 j값에 변화를 줌으로써
현재 위치한 배열위치를 변화 시키는데
배열위치를 변화시키기 보다, 앞에 있는 값일 경우 현재위치의 배열에 새로운 값을 뽑도록 하시는게 더 좋아보이네요 .