我一开始的想法是间断性的输出空格和solve(k-1)
但是发现问题很大。
雨菲:可以用一个数组保存啊
我:那不爆了?
雨菲:不会爆。
我一算:729 × 729,还真没爆。
然后就直接WA了......
仔细观察,发现要输出X,而我输出x
然后就A了。
大水题。
1 #include <cstdio> 2 /** 3 made with Unity 4 poj 2083 5 */ 6 using namespace std; 7 const int N = 729; 8 char G[N][N]; 9 inline int pow(int a, int b) { 10 int ans = 1; 11 for(int i = 1; i <= b; i++) { 12 ans *= a; 13 } 14 return ans; 15 } 16 17 void solve(int k, int x, int y) { 18 if(k == 1) { 19 G[x][y] = ‘X‘; 20 return; 21 } 22 int len = pow(3, k - 2); 23 solve(k - 1, x, y); 24 solve(k - 1, x + 2 * len, y); 25 solve(k - 1, x + 2 * len, y + 2 * len); 26 solve(k - 1, x, y + 2 * len); 27 solve(k - 1, x + len, y + len); 28 return; 29 } 30 31 int main() { 32 int n; 33 while(scanf("%d", &n)) { 34 if(n == -1) { 35 break; 36 } 37 for(int i = 0; i < N; i++) { 38 for(int j = 0; j < N; j++) { 39 G[i][j] = ‘ ‘; 40 } 41 } 42 solve(n, 0, 0); 43 int len = pow(3, n - 1); 44 for(int i = 0; i < len; i++) { 45 for(int j = 0; j < len; j++) { 46 putchar(G[i][j]); 47 } 48 printf("\n"); 49 } 50 printf("-\n"); 51 } 52 53 54 return 0; 55 }
AC代码
原文地址:https://www.cnblogs.com/huyufeifei/p/9023541.html
时间: 2024-10-03 20:49:31