All pastes #2048624 Raw Edit

Untitled

public text v1 · immutable
#2048624 ·published 2011-04-20 12:42 UTC
rendered paste body
#include <stdio.h>
static struct {
  int value1;
  int value2;
  int used;
} data[] = {
  { 1, 2, 0 },
  { 1, 3, 0 },
  { 2, 3, 0 },
  { 2, 4, 0 },
  { 3, 4, 0 },
};

enum { DATA_SIZE = sizeof data / sizeof *data };

static int output[DATA_SIZE];

void traverse(int from, int to, int depth) {
  output[depth++] = from;

  int i;
  if (from == to) {
    for (i = 0; i < depth; i++) {
      if (i) {
        printf("-");
      }
      printf("%d", output[i]);
    }
    printf("\n");
  } else {
    for (i = 0; i < DATA_SIZE; i++) {
      if (!data[i].used) {
        data[i].used = 1;

        if (from == data[i].value1) {
          traverse(data[i].value2, to, depth);
        } else if (from == data[i].value2) {
          traverse(data[i].value1, to, depth);
        }

        data[i].used = 0;
      }
    }
  }
}

int main() {
  traverse(1, 3, 0);
  return 0;
}