#include <stdio.h>
#define N 5
int main(void) {
int i,j,dim, val = 1;
int matrix[N][N];
// perform spiral print
for (dim = 0; dim < (N+1)/2; dim++)
{
// set initial i and go till the "last column"
i = dim;
for (j = dim; j < N - dim; j++)
{
matrix[i][j] = val++;
}
// bring back i and j to the proper coordinate
// and move down to the "last row"
j--;i++;
for (; i < N - dim; i++)
{
matrix[i][j] = val++;
}
// bring back i and j to the proper coordinate
// and move back to the "first column"
i--;j--;
for (; j >= dim; j--)
{
matrix[i][j] = val++;
}
// bring back i and j to the proper coordinate
// and move up to the "first row"
j++;i--;
for (; i > dim; i--)
{
matrix[i][j] = val++;
}
}
// init and print the matrix
for (i=0; i < N; i++)
{
for (j=0; j< N; j++)
{
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE4gNQoKaW50IG1haW4odm9pZCkgewogICAgaW50IGksaixkaW0sIHZhbCA9IDE7CiAgICBpbnQgbWF0cml4W05dW05dOwoKICAgIC8vIHBlcmZvcm0gc3BpcmFsIHByaW50CiAgICBmb3IgKGRpbSA9IDA7IGRpbSA8IChOKzEpLzI7IGRpbSsrKQogICAgewogICAgICAgIC8vIHNldCBpbml0aWFsIGkgYW5kIGdvIHRpbGwgdGhlICJsYXN0IGNvbHVtbiIKICAgICAgICBpID0gZGltOwogICAgICAgIGZvciAoaiA9IGRpbTsgaiA8IE4gLSBkaW07IGorKykKICAgICAgICB7CiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IHZhbCsrOwogICAgICAgIH0KCiAgICAgICAgLy8gYnJpbmcgYmFjayBpIGFuZCBqIHRvIHRoZSBwcm9wZXIgY29vcmRpbmF0ZQogICAgICAgIC8vIGFuZCBtb3ZlIGRvd24gdG8gdGhlICJsYXN0IHJvdyIKICAgICAgICBqLS07aSsrOwogICAgICAgIGZvciAoOyBpIDwgTiAtIGRpbTsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gdmFsKys7CiAgICAgICAgfQoKICAgICAgICAvLyBicmluZyBiYWNrIGkgYW5kIGogdG8gdGhlIHByb3BlciBjb29yZGluYXRlCiAgICAgICAgLy8gYW5kIG1vdmUgYmFjayB0byB0aGUgImZpcnN0IGNvbHVtbiIKICAgICAgICBpLS07ai0tOwogICAgICAgIGZvciAoOyBqID49IGRpbTsgai0tKQogICAgICAgIHsKICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gdmFsKys7CiAgICAgICAgfQoKICAgICAgICAvLyBicmluZyBiYWNrIGkgYW5kIGogdG8gdGhlIHByb3BlciBjb29yZGluYXRlCiAgICAgICAgLy8gYW5kIG1vdmUgdXAgdG8gdGhlICJmaXJzdCByb3ciCiAgICAgICAgaisrO2ktLTsKICAgICAgICBmb3IgKDsgaSA+IGRpbTsgaS0tKQogICAgICAgIHsKICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gdmFsKys7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBpbml0IGFuZCBwcmludCB0aGUgbWF0cml4CiAgICBmb3IgKGk9MDsgaSA8IE47IGkrKykKICAgIHsKICAgICAgICBmb3IgKGo9MDsgajwgTjsgaisrKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCIlMmQgIiwgbWF0cml4W2ldW2pdKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgfQoKICAgIHJldHVybiAwOwp9