http://ideone.com/c0fLZ3

안에서 밖으로 나오도록 짰음!

void buildSnailReverse(int* a, int w, int h)
{
    int s=w*h,n=0,d=h>w,r=2*d+1,v[4]={1,w,-1,-w},m=(d?w:h)-1;
    a+=m/2*(w+1);
    for(w=(d?h:w)-m;n<s;a+=v[d])*a=++n,n>w&&!a[v[h=d+r&3]]?d=h:0;
}