#include using namespace std; void traverse(int N) { int i = (N-1)/2; int j = i; int dir(0); // counter to keep track on direction int counter(0); // counter int steps(1); // number of steps needed per direction int totalSteps = N*N; // total number of travese steps while (counter < totalSteps) { cout << i << "," << j << " "; ++counter; // Use direction counter to determine the direction switch (dir % 4) { case 0: ++i; break; case 1: ++j; // Increase the steps need for the next pivot direction if (counter % steps == 0) ++steps; break; case 2: --i; break; case 3: --j; // Increase the steps need for the next pivot direction if (counter % steps == 0) ++steps; break; } // Only change direction once it reach the number of steps needed per direction if (counter % steps == 0) ++dir; } cout << endl; } int main() { traverse(3); traverse(5); traverse(7); }