void trace_route(CommonType t[ACTIVITY_COUNT][ACTIVITY_COUNT], CommonType i, CommonType j, ElementType* result) { if (i < j) { if (t[i][j] != 0) *result++ = t[i][j]; trace_route(t, i, t[i][j], result); } }
int main(void) { int triangle[15][15], biggest = 0; route_t route; puts("Hello World"); /* prints Hello World */ memset(triangle, 0, sizeof(int) * 15 * 15); read_triangle(triangle); trace_route(triangle, 0, 0, 0, &biggest, &route); return EXIT_SUCCESS; }
void trace_route(int triangle[][15], int i, int j, int sum, int *biggest, route_t *route) { route->node_array[i].i = i; route->node_array[i].j = j; if (i == 14) { sum += triangle[i][j]; if (*biggest < sum) *biggest = sum; printf("sum = %d, i=%d, j=%d, biggest = %d\n", sum, i, j, *biggest); print_route(route); return; } trace_route(triangle, i + 1, j, sum + triangle[i][j], biggest, route); trace_route(triangle, i + 1, j + 1, sum + triangle[i][j], biggest, route); return ; }
int main(void) { activity_selector(s, f, ACTIVITY_COUNT, c, t); // output result trace_route(t, 0, ACTIVITY_COUNT - 1, result_index); printf("result = "); ElementType* result = result_index; while(*(result) != 0) { printf("%3d ", *result++); } printf("\n"); return EXIT_SUCCESS; }