TRIPATHCNT 런타임 오류 및 효율성 질문입니다. 신유건 C언어 int mul(int n) { int result = 1; for (int i = 0; i < n; i++) { result *= 2; } return result; } int main() { int C= 0; int n = 0; int i = 0, j = 0; int** arr = NULL; int* code=NULL; int sum1 = 0; int sum2 = 0; int count = 0; printf("테스트 몇번? : "); scanf("%d", &C); if (C > 50) return 0; for (int a = 0; a < C; a++) { printf("삼각형의 크기는? : "); scanf("%d", &n); if (n < 2 || n>180) return 0; arr = (int**)malloc(sizeof(int*)*n);//이차원배열 code = (int*)malloc(sizeof(int)*(n-1));//동적할당 for (int i = 0; i < n; i++) { arr[i] = (int*)malloc(sizeof(int)*i); if (i < n - 1) { code[i] = 0; } } for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { scanf("%d", &arr[i][j]); } } sum1 = arr[0][0]; while (i<n-1)//가장 큰 경로합을 만든다. { if(arr[i + 1][j + 1] > arr[i + 1][j]) { sum1 += arr[i + 1][j + 1]; i++; j++; } else { sum1 += arr[i + 1][j]; i++; } }//숫자가 제일 큰경우를 만듬 for (int i = 0; i < mul(n - 1) ;i++)//이진수 배열을 만들어 0이면 바로아래줄로 1이면 아래 오른쪽 수를 더하게끔한다. { sum2 = arr[0][0]; for (int i = 0; i < n - 1;i++)//2가 넘으면 1올려준다. { if (code[i] >= 2) { if (code[n - 2] == 2) code[n - 2] = 0; code[i + 1]++; code[i] = 0; } } for (int i = 0, j=0; i < n - 1; i++) { if (code[i]) { sum2 += arr[i + 1][j + 1]; j++; } else sum2 += arr[i + 1][j]; } code[0]++; if (sum1 == sum2)//제일큰 수와 현재 경로의 수가 같으면 1 올라감 count++; } printf("%d\n", count);//count의개수 출력 } free(code); return 0; } 제 코드는 위와 같습니다 그런데 런타임오류가 걸리는데 무슨이유인지 모르겠습니다. 그리고 보시다시피 코드를 효율적으로 짜지 못하였는데 효율적으로 짤수 있는방법을 여쭈어보고 싶습니다. 9년 전
1개의 댓글이 있습니다. pumpyboom 재귀함수로 하루종일 도전해보고있습니다. 결과가 나오길 바라며... 9년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
신유건
C언어
int mul(int n)
{
int result = 1;
}
int main()
{
int C= 0;
int n = 0;
int i = 0, j = 0;
int** arr = NULL;
int* code=NULL;
int sum1 = 0;
int sum2 = 0;
int count = 0;
printf("테스트 몇번? : ");
scanf("%d", &C);
if (C > 50)
return 0;
for (int a = 0; a < C; a++)
{
printf("삼각형의 크기는? : ");
scanf("%d", &n);
if (n < 2 || n>180)
return 0;
arr = (int**)malloc(sizeof(int*)*n);//이차원배열
code = (int*)malloc(sizeof(int)*(n-1));//동적할당
for (int i = 0; i < n; i++)
{
arr[i] = (int*)malloc(sizeof(int)*i);
if (i < n - 1)
{
code[i] = 0;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
scanf("%d", &arr[i][j]);
}
}
sum1 = arr[0][0];
}
제 코드는 위와 같습니다 그런데 런타임오류가 걸리는데 무슨이유인지 모르겠습니다.
그리고 보시다시피 코드를 효율적으로 짜지 못하였는데 효율적으로 짤수 있는방법을 여쭈어보고 싶습니다.
9년 전