1 条题解
-
0
C++ :
#include <cstdio> #include <cstring> /* n<=7 -> 边长 3^6 = 729,留足余量 */ static char g[800][800]; void draw(int n, int r, int c){ if(n == 1){ g[r][c] = 'X'; return; } int u = 1; for(int i=2;i<n;i++) u *= 3; /* u = 3^(n-2) */ draw(n-1, r, c); draw(n-1, r, c + 2*u); draw(n-1, r + u, c + u); draw(n-1, r + 2*u, c); draw(n-1, r + 2*u, c + 2*u); } int main(){ int n; if(scanf("%d", &n) != 1) return 0; int s = 1; for(int i=1;i<n;i++) s *= 3; memset(g, ' ', sizeof(g)); draw(n, 0, 0); for(int i=0;i<s;i++){ int last = -1; for(int j=0;j<s;j++) if(g[i][j] == 'X') last = j; for(int j=0;j<=last;j++) putchar(g[i][j]); putchar('\n'); } return 0; }
- 1
信息
- ID
- 2659
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者