안녕하세요.
PICNIC문제 워낙 어려워서 책에 나와있는 알고리즘 사용하여 문제를 풀어보았습니다. (완전탐색, 재귀함수 사용)
그런데 런타임 오류
RTE (SIGABRT: program aborted, probably assertion fail)
가 계속 떠서 이렇게 질문드립니다.
어느 부분에서 오류가 나는건지 알려주시면 감사하겠습니다!
#include <stdio.h>#include <string.h>#include <stdlib.h>voidset_friends(int[][10],int,int);intcount_parings(int[][10],int[],int);intmain(){inti=0,j=0;intn=0,m=0;//n은 학생 수, m 은 짝의 수 입니다.inttest_case=0;intresult=0;inttaken[10]={0,};intare_friends[10][10]={0,};scanf("%d",&test_case);if(test_case<0||test_case>50){printf("Error: 0<Testcase<= 50\n");exit(0);}while(test_case>0){// initialization.for(i=0;i<10;i++){taken[i]=0;for(j=0;j<10;j++){are_friends[i][j]=0;}}scanf("%d %d\n",&n,&m);// check boudary of nif(n<2||n>10){printf("Error: 2<=N<=10\n");exit(1);}elseif(n%2){printf("Error : The number of student must be even number.\n");exit(1);}// check boundary of mif(m<0||m>(n*(n-1))/2){printf("Error: 0<=M<=n(n-1)/2\n");exit(1);}set_friends(are_friends,n,m);result=count_parings(are_friends,taken,n);printf("%d\n",result);test_case--;}return0;}// 짝을 입력받는 함수입니다.voidset_friends(intare_friends[][10],intn,intm){intcount=0;intcoordinate=0,x=0,y=0;char*token=NULL;chartemp[30]={0,};gets(temp);token=strtok(temp," ");x=y=-1;while(token){coordinate=atoi(token);if(coordinate<0||coordinate>=n){printf("Error: 0 <= Stundent number <= n-1\n");exit(1);}if(x==-1){x=coordinate;}elseif(y==-1){y=coordinate;}if(x!=-1&&y!=-1){are_friends[x][y]=1;are_friends[y][x]=1;x=-1;y=-1;}token=strtok(NULL," ");count++;}}intcount_parings(intare_friends[][10],inttaken[],intn){intret=0,pair_with=0;intfirst_free=-1;for(inti=0;i<n;i++){if(!taken[i]){first_free=i;break;}}if(first_free==-1){return1;}for(pair_with=first_free+1;pair_with<n;pair_with++){if(!taken[pair_with]&&are_friends[first_free][pair_with]){taken[first_free]=taken[pair_with]=1;ret+=count_parings(are_friends,taken,n);taken[first_free]=taken[pair_with]=0;}}returnret;}
doubleknd
안녕하세요.
PICNIC문제 워낙 어려워서 책에 나와있는 알고리즘 사용하여 문제를 풀어보았습니다. (완전탐색, 재귀함수 사용)
그런데 런타임 오류
RTE (SIGABRT: program aborted, probably assertion fail)
가 계속 떠서 이렇게 질문드립니다.
어느 부분에서 오류가 나는건지 알려주시면 감사하겠습니다!
9년 전