뭔지맞혀바
#include <stdio.h>
#define ARRAY_SIZE 10
int isTeam(int arr[], int);
void makeTeam(int arr[], int i);
void sortTeam(int* team);
void orderTeam(int* teams[]);
int teams++;
int teamCount = 0;
int main(void) {
int arr+;
for (int i=0; i<ARRAY_SIZE; i++){
scanf("%d", &arr[i]);
}
for (int i=0; i<ARRAY_SIZE; i++){
if (isTeam(arr, i)){
makeTeam(arr, i);
}
}
printf("count: %d\n", teamCount);
for (int i=0; i<teamCount; i++){
int min = 0;
for (int j=0; j<teamCount; j++){
if (teams[min][0] > teams[j][0]){
min = j;
}
}
for (int k=0; k<10; k++){
if (teams[min][k] <=9){
printf("%d ", teams[min][k]);
}
}
teams[min][0] = 10;
printf("\n");
}
return 0;
}
int isTeam(int arr[], int index){
int holder = index;
int try = 0;
while (try<10){
if (index != arr[holder]){
holder = arr[holder];
try++;
}
else{
return 1;
}
}
return 0;
}
void makeTeam(int arr[], int index){
int team+;
int count = 0;
int holder = index;
team[count++] = holder;
while(1){
if (index != arr[holder]){
holder = arr[holder];
team[count++] = holder;
}
else{
arr[index] = index;
break;
}
}
for (int i=count; i<10; i++){
team[i] = 10;
}
sortTeam(team);
for (int i=0; i<10; i++){
teams[teamCount][i] = team[i];
}
teamCount++;
}
void sortTeam(int* team){
int min_idx;
int tmp;
for (int i=0; i<ARRAY_SIZE-1; i++){
min_idx = i;
for (int j = i+1; j<ARRAY_SIZE; j++){
if (team[min_idx] > team[j]){
min_idx = j;
}
}
tmp = team[min_idx];
team[min_idx] = team[i];
team[i] = tmp;
}
}
댓글 0