목록2017/10/04 (7)
EASY7
c언어에서 다항식을 표현하는 것에는 두가지 방법이 있다. poly_add1은 배열을 이용해 0차부터 최고차항까지 다 표현한다. 연산이 편리한 장점이 있다. poly_add2는 0이 아닌 차수만 표현하기에 메모리 낭비가 적다. #include #define MAX(a,b) (((a)>(b))?(a):(b)) #define MAX_DEGREE 10 typedef struct { int degree; int coef[MAX_DEGREE]; } polynomial; polynomial poly_add1(polynomial A, polynomial B) { int i; polynomial C; int Apos = 0, Bpos = 0, Cpos = 0; int degree_a = A.degree, degree_b..
c언어에서 외부 파일을 불러오는 방법이다. int main() { FILE *fp; char sentence[30]; if ((fp = fopen("input.txt", "r")) == NULL) { fprintf(stderr, "fileOpenError"); exit(1); } while (fgets(sentence, sizeof(sentence), fp) != NULL) { printf("%s\n", sentence); } }
merge sort #include #include void display(int* A, int n); void merge(int A[], int p, int q, int r); void mergeSort(int A[], int p, int r); void copyArray(int *A, int *temp, int p, int r); int main() { int n; int *A; int i; printf("배열의 길이를 입력하세요:"); scanf("%d", &n); A = (int*)malloc(sizeof(int) * n); for (i = 0; i < n; i++) { printf("%d번째 배열의 원소를 입력하세요:", i + 1); scanf("%d", &A[i]); } printf("정렬 ..
m[0][0]에서 m[3][3]까지 가는데 합이 가장 큰 길은?? M배열에 자기 까지의 최고 합을 메모한다. m배열 6 7 12 5 5 3 11 18 7 17 3 3 8 10 14 9 #include #include int matrixPath(int m[][4], int r, int c, int i, int j, int M[][4]) { if (i == 0 && j == 0) { printf("m[%d][%d] :%d \n", i, j, m[i][j]); return m[i][j]; } else if (i == 0) { if (M[0][j] == 0) M[0][j] = matrixPath(m, r, c, 0, j - 1, M) + m[i][j]; printf("M[%d][%d] :%d \n", i, j,..
순환을 이용한 피보나치 수열 같은 계산을 또 하지 않기 위해 F배열에 값을 메모한다. #include #include int fib(int n, int* F) { if (n == 1 || n == 2) return 1; if (F[n - 1] == 0) F[n - 1] = fib(n - 1, F); if (F[n - 2] == 0) F[n - 2] = fib(n - 2, F); printf("%d ", F[n - 1] + F[n - 2]); return F[n - 1] + F[n - 2]; } int main(void) { int n, i; int *F; printf("몇 번째까지의 피보나치 수열:"); scanf("%d", &n); //fn F = (int*)malloc(sizeof(int)*(n + ..
순환을 이용한 조합 m 배열에 값을 메모한다. #include int comb(int n, int r, int *m); int main() { int c; int i; int n, r; int *m; printf("enter number n and r (nCr)\n"); printf("n:"); scanf("%d", &n); printf("r:"); scanf("%d", &r); m = (int*)malloc(sizeof(int) * (r + 1)); for (i = 0; i
미로 길 찾기 #include #include int matrixPath(int **m, int r, int c, int i, int j, int **M, int **N) { if (i == 0 && j == 0) return m[i][j]; else if (i == 0) { if (N[0][j] == 0) { M[0][j] = matrixPath(m, r, c, 0, j - 1, M, N) + m[i][j]; N[0][j] = 1; } return M[0][j]; } else if (j == 0) { if (N[i][0] == 0) { M[i][0] = matrixPath(m, r, c, i - 1, 0, M, N) + m[i][j]; N[i][0] = 1; } return M[i][0]; } else..