A. 중학교 1,2,3학년 32명의 학생들이 수련회에 참석한다.
B. 32명의 참석자들을 6개조로 편성하고자 한다.
C. 같은 학년으로 조를 구성할 수 없다.
D. 참석자들은 같은 조가 되고 싶은 친구들을 우선순위 없이 최대 3명까지 적어 낼 수 있다.
이게 조건이구요.
출력결과는 아래와 같이 나와야 합니다.
저는 인접행렬을 활용해서 프로그램을 만들어보고자
교재와 인터넷을 참고하여 아래와 같이 만들었는데....
그 이상 어떻게 해야 할 지 모르겠습니다.
할 줄 아는 분들께서는 조언 하나씩 던져주심 감사하겠습니다 ㅠㅠ
#include<stdio.h>
int func(int size, int M[10][10]);
int score;
int main(void)
{
int testcase;
int num, couple;
int t1, t2;
int A[10][10];
scanf("%d", &testcase);
for(int i=0; i<testcase; i++)
{
score = 0;
for(int j=0; j<10; j++)
{
for(int k=0; k<10; k++)
{
A[j][k]=0;
}
} //initialization
scanf("%d %d", &num, &couple);
for(int j=0; j<couple; j++)
{
scanf("%d %d", &t1, &t2);
A[t1][t2] = 1;
A[t2][t1] = 1;
} //matrix
func(num, A);
printf("%d\n", score);
}
return 0;
}
int func(int size, int M[10][10])
{
int M2[10][10];
if(size == 2)
{
if(M[0][0] == 0 && M[0][1] == 1 && M[1][0] == 1 && M[1][1] == score++);
}
return 0;
}
for(int i=0; i<size; i++)
{
if(M[0][i]==1)
{
for(int j=0; j<size-2; j++)
{
for(int k=0; k<size -2; k++)
{
if(j<=i&& k<=i)
{
M2[j][k]=M[j+1][k+1];
}
else if(j<=i && k>i)
{
M2[j][k]=M[j+1][k+2];
}
else if(j>i && k<= i)
{
M2[j][k] = M[j+2][k+1];
}
else if(j>i && k>i)
{
M2[j][k]=M[j+2][k+2];
}
}
}
func(size - 2, M2);
}
}
return 0;
}
ㄷㄷㄷ
많이 어려운가요 ㄷㄷㄷㄷ