int main(void) { unsigned int count, i, j, max, maxval, start_tics, limit=1000000; char msg[200]; start_tics = clock(); max=0; /* init max length found */ for (i=2; i<limit; i++) { count = 0; j = i; while (j != 1) { j = next_coll(j); /* turn the crank */ count ++; /* count an iteration */ } if (count > max) { max = count; /* save the new max length */ maxval = i; /* and the value that led */ } /* to it */ } sprintf(msg, "Longest chain was %d in length starting with %d\n", max, maxval); logcputime(start_tics, msg); exit(0); }
adjacency_matrix::row_then_coll_iterator::iter_state_t& adjacency_matrix::row_then_coll_iterator::next(size_t size, size_t width, iter_state_t& i) { if (row(i) < width) { next_row(i); } if (row(i) == width && coll(i) < width) { next_coll(i); if (coll(i) < width) { i = iter_state_t(0, coll(i)); } } if ((row(i) == width) && (coll(i) == width)) { i = iter_state_t(size, size); } return i; }