#include void doit(int n) { static int data[4]; static int level; int i; data[n] = ++level; if (level == 4) { for (i = 0;i < 4;++i) printf("%d ",data[i]); printf("\n"); } else for (i = 0;i < 4;++i) if (!data[i]) doit(i); data[n] = 0; --level; } int main(void) { doit(0); return 0; }