Soba
BAN USERC/C++/Python
struct Point {
int x;
int y;
};
void spOnce(char **a, Point p0, Point p1) {
if(p0.x==p1.x) {
if(p0.y<=p1.y) {
for(int i=p0.y; i<=p1.y; i++) {
cout<<a[p0.x][i];
}
} else {
for(int i=p0.y; i>=p1.y; i--) {
cout<<a[p0.x][i];
}
}
} else {
if(p0.x<=p1.x) {
for(int i=p0.x; i<=p1.x; i++) {
cout<<a[i][p0.y];
}
} else {
for(int i=p0.x; i>=p1.x; i--) {
cout<<a[i][p0.y];
}
}
}
}
void spiralTrav(char **a, int m, int n) {
Point pt[4];
pt[0].x=0; pt[0].y=0;
pt[1].x=0; pt[1].y=n-1;
pt[2].x=m-1; pt[2].y=n-1;
pt[3].x=m-1; pt[3].y=0;
int pos=0;
while (pt[0].x<=pt[3].x) {
spOnce(a, pt[pos], pt[(pos+1)%4]);
switch(pos) {
case 0:
pt[0].x++; pt[1].x++;
break;
case 1:
pt[1].y--; pt[2].y--;
break;
case 2:
pt[2].x--; pt[3].x--;
break;
case 3:
pt[3].y++; pt[0].y++;
break;
default:
break;
}
pos=(pos+1)%4;
}
}
trie
- Soba March 11, 2012