poj2083

/* * poj2083.cpp * * Created on: 2010-8-10 * Author: friendy */ //好神奇的递归阿……号精减 #include #include #include #include #include using namespace std; char map[1000][1000]; void graph(int x, int y, int n) { int l; if (n == 1) map[x][y] = 'X'; else { l = (int) pow(3.0, (double) (n - 2)); graph(x, y, n - 1); graph(x, y + 2 * l, n - 1); graph(x + 2 * l, y, n - 1); graph(x + l, y + l, n - 1); graph(x + 2 * l, y + 2 * l, n - 1); } } int main(){ int i,j,n,r,max; while(1){ scanf("%d",&n); if(n==-1) break; r = (int) pow(3.0, (double) (n - 1)); graph(0, 0, n); for (i = 0; i < r; i++) { max = 0; for (j = 0; j < r; j++) if (map[i][j] == 'X') max = j; for (j = 0; j < max; j++) if (map[i][j] != 'X') map[i][j] = ' '; map[i][max + 1] = '/0'; } for (i = 0; i < r; i++) printf("%s/n", map[i]); printf("-/n"); } }

你可能感兴趣的:(Graph,2010)