3 条题解
-
0
字符串的重复调用
#include <iostream> using namespace std; int n,bi=2; string g[11][100000],b[11][100000]; void fun(int ni) { if(ni==n) return ; for(int i=1;i<=6*bi;i++) { if(i<=3*bi) g[ni+1][i]=b[ni][i]+b[ni][i]; else g[ni+1][i]=b[ni][i-3*bi]+g[ni][i-3*bi]; if(i<=3*bi) b[ni+1][i]=g[ni][i]+g[ni][i]; else b[ni+1][i]=g[ni][i-3*bi]+b[ni][i-3*bi]; } bi=bi*2; fun(ni+1); } int main() { cin>>n; g[1][1]="******"; g[1][2]="******"; g[1][3]="******"; g[1][4]="***..."; g[1][5]="***..."; g[1][6]="***..."; b[1][1]="......"; b[1][2]="......"; b[1][3]="......"; b[1][4]="...***"; b[1][5]="...***"; b[1][6]="...***"; fun(1); for(int i=1;i<=3*bi;i++) { cout<<g[n][i]<<"\n"; } }
-
0
暴力美学
#include<stdio.h> char g1[7][7]; char b1[7][7]; char g2[13][13]; char b2[13][13]; char g3[25][25]; char b3[25][25]; char g4[49][49]; char b4[49][49]; char g5[97][97]; char b5[97][97]; char g6[193][193]; char b6[193][193]; char g7[385][385]; char b7[385][385]; char g8[769][769]; char b8[769][769]; char g9[1537][1537]; char b9[1537][1537]; char gx[3073][3073]; void h1(); void h2(); void h3(); void h4(); void h5(); void h6(); void h7(); void h8(); void h9(); void hx(); int main() { h1(); h2(); h3(); h4(); h5(); h6(); h7(); h8(); h9(); hx(); int n; scanf("%d",&n); if(n == 1) { for(int i = 0; i < 6; i++) { for(int j = 0; j < 6; j++) { printf("%c",g1[i][j]); } printf("\n"); } } else if(n == 2) { for(int i = 0; i < 12; i++) { for(int j = 0; j < 12; j++) { printf("%c",g2[i][j]); } printf("\n"); } } else if(n == 3) { for(int i = 0; i < 24; i++) { for(int j = 0; j < 24; j++) { printf("%c",g3[i][j]); } printf("\n"); } } else if(n == 4) { for(int i = 0; i < 48; i++) { for(int j = 0; j < 48; j++) { printf("%c",g4[i][j]); } printf("\n"); } } else if(n == 5) { for(int i = 0; i < 96; i++) { for(int j = 0; j < 96; j++) { printf("%c",g5[i][j]); } printf("\n"); } } else if(n == 6) { for(int i = 0; i < 192; i++) { for(int j = 0; j < 192; j++) { printf("%c",g6[i][j]); } printf("\n"); } } else if(n == 7) { for(int i = 0; i < 384; i++) { for(int j = 0; j < 384; j++) { printf("%c",g7[i][j]); } printf("\n"); } } else if(n == 8) { for(int i = 0; i < 768; i++) { for(int j = 0; j < 768; j++) { printf("%c",g8[i][j]); } printf("\n"); } } else if(n == 9) { for(int i = 0; i < 1536; i++) { for(int j = 0; j < 1536; j++) { printf("%c",g9[i][j]); } printf("\n"); } } else if(n == 10) { for(int i = 0; i < 3072; i++) { for(int j = 0; j < 3072; j++) { printf("%c",gx[i][j]); } printf("\n"); } } } void h1() { for(int i = 0; i < 3; i++) { for(int j = 0; j < 6; j++) { g1[i][j]='*'; b1[i][j]='.'; } } for(int i = 3; i < 6; i++) { for(int j = 0; j < 3; j++) { g1[i][j]='*'; b1[i][j]='.'; } for(int j = 3; j < 6; j++) { g1[i][j]='.'; b1[i][j]='*'; } } } void h2() { for(int i = 0; i < 6; i++) { for(int j = 0; j < 6; j++) { g2[i][j]=b1[i][j]; b2[i][j]=g1[i][j]; } } for(int i = 0; i < 6; i++) { for(int j = 6; j < 12; j++) { g2[i][j]=b1[i][j%6]; b2[i][j]=g1[i][j%6]; } } for(int i = 6; i < 12; i++) { for(int j = 0; j < 6; j++) { g2[i][j]=b1[i%6][j]; b2[i][j]=g1[i%6][j]; } } for(int i = 6; i < 12; i++) { for(int j = 6; j < 12; j++) { g2[i][j]=g1[i%6][j%6]; b2[i][j]=b1[i%6][j%6]; } } } void h3() { for(int i = 0; i < 12; i++) { for(int j = 0; j < 12; j++) { g3[i][j]=b2[i][j]; b3[i][j]=g2[i][j]; } } for(int i = 0; i < 12; i++) { for(int j = 12; j < 24; j++) { g3[i][j]=b2[i][j%12]; b3[i][j]=g2[i][j%12]; } } for(int i = 12; i < 24; i++) { for(int j = 0; j < 12; j++) { g3[i][j]=b2[i%12][j]; b3[i][j]=g2[i%12][j]; } } for(int i = 12; i < 24; i++) { for(int j = 12; j < 24; j++) { g3[i][j]=g2[i%12][j%12]; b3[i][j]=b2[i%12][j%12]; } } } void h4() { for(int i = 0; i < 24; i++) { for(int j = 0; j < 24; j++) { g4[i][j]=b3[i][j]; b4[i][j]=g3[i][j]; } } for(int i = 0; i < 24; i++) { for(int j = 24; j < 48; j++) { g4[i][j]=b3[i][j%24]; b4[i][j]=g3[i][j%24]; } } for(int i = 24; i < 48; i++) { for(int j = 0; j < 24; j++) { g4[i][j]=b3[i%24][j]; b4[i][j]=g3[i%24][j]; } } for(int i = 24; i < 48; i++) { for(int j = 24; j < 48; j++) { g4[i][j]=g3[i%24][j%24]; b4[i][j]=b3[i%24][j%24]; } } } void h5() { for(int i = 0; i < 48; i++) { for(int j = 0; j < 48; j++) { g5[i][j]=b4[i][j]; b5[i][j]=g4[i][j]; } } for(int i = 0; i < 48; i++) { for(int j = 48; j < 96; j++) { g5[i][j]=b4[i][j%48]; b5[i][j]=g4[i][j%48]; } } for(int i = 48; i < 96; i++) { for(int j = 0; j < 48; j++) { g5[i][j]=b4[i%48][j]; b5[i][j]=g4[i%48][j]; } } for(int i = 48; i < 96; i++) { for(int j = 48; j < 96; j++) { g5[i][j]=g4[i%48][j%48]; b5[i][j]=b4[i%48][j%48]; } } } void h6() { for(int i = 0; i < 96; i++) { for(int j = 0; j < 96; j++) { g6[i][j]=b5[i][j]; b6[i][j]=g5[i][j]; } } for(int i = 0; i < 96; i++) { for(int j = 96; j < 192; j++) { g6[i][j]=b5[i][j%96]; b6[i][j]=g5[i][j%96]; } } for(int i = 96; i < 192; i++) { for(int j = 0; j < 96; j++) { g6[i][j]=b5[i%96][j]; b6[i][j]=g5[i%96][j]; } } for(int i = 96; i < 192; i++) { for(int j = 96; j < 192; j++) { g6[i][j]=g5[i%96][j%96]; b6[i][j]=b5[i%96][j%96]; } } } void h7() { for(int i = 0; i < 192; i++) { for(int j = 0; j < 192; j++) { g7[i][j]=b6[i][j]; b7[i][j]=g6[i][j]; } } for(int i = 0; i < 192; i++) { for(int j = 192; j < 384; j++) { g7[i][j]=b6[i][j%192]; b7[i][j]=g6[i][j%192]; } } for(int i = 192; i < 384; i++) { for(int j = 0; j < 192; j++) { g7[i][j]=b6[i%192][j]; b7[i][j]=g6[i%192][j]; } } for(int i = 192; i < 384; i++) { for(int j = 192; j < 384; j++) { g7[i][j]=g6[i%192][j%192]; b7[i][j]=b6[i%192][j%192]; } } } void h8() { for(int i = 0; i < 384; i++) { for(int j = 0; j < 384; j++) { g8[i][j]=b7[i][j]; b8[i][j]=g7[i][j]; } } for(int i = 0; i < 384; i++) { for(int j = 384; j < 768; j++) { g8[i][j]=b7[i][j%384]; b8[i][j]=g7[i][j%384]; } } for(int i = 384; i < 768; i++) { for(int j = 0; j < 384; j++) { g8[i][j]=b7[i%384][j]; b8[i][j]=g7[i%384][j]; } } for(int i = 384; i < 768; i++) { for(int j = 384; j < 768; j++) { g8[i][j]=g7[i%384][j%384]; b8[i][j]=b7[i%384][j%384]; } } } void h9() { for(int i = 0; i < 768; i++) { for(int j = 0; j < 768; j++) { g9[i][j]=b8[i][j]; b9[i][j]=g8[i][j]; } } for(int i = 0; i < 768; i++) { for(int j = 768; j < 1536; j++) { g9[i][j]=b8[i][j%768]; b9[i][j]=g8[i][j%768]; } } for(int i = 768; i < 1536; i++) { for(int j = 0; j < 768; j++) { g9[i][j]=b8[i%768][j]; b9[i][j]=g8[i%768][j]; } } for(int i = 768; i < 1536; i++) { for(int j = 768; j < 1536; j++) { g9[i][j]=g8[i%768][j%768]; b9[i][j]=b8[i%768][j%768]; } } } void hx() { for(int i = 0; i < 1536; i++) { for(int j = 0; j < 1536; j++) { gx[i][j]=b9[i][j]; } } for(int i = 0; i < 1536; i++) { for(int j = 1536; j < 3072; j++) { gx[i][j]=b9[i][j%1536]; } } for(int i = 1536; i < 3072; i++) { for(int j = 0; j < 1536; j++) { gx[i][j]=b9[i%1536][j]; } } for(int i = 1536; i < 3072; i++) { for(int j = 1536; j < 3072; j++) { gx[i][j]=g9[i%1536][j%1536]; } } }
-
0
先构建一个二维数组,使用DFS递归填充即可,再最后打印。
因为每一级豆子都是由上一级组成,所以从 n 递归到 1,n级豆子就会有1 << n - 1 行个一级豆子组成(“<<”位移运算符,二进制之下进行左移,具体作用自己查询)
自定义函数dfs(n, good, x1 y1, x2, y2).六个参数分别为n级豆子, 是否为好豆子, n - 1级豆子的上下边界,n - 1级豆子的左右边界。
这只是做法之一, 也是比较容易想到的一种。
#include<bits/stdc++.h> using namespace std; char mp[5000][5000]; void dfs(int n, int op, int lt, int rt, int l, int r) { if(n==0) { for(int i = lt; i <= rt; i++) { for(int j = l; j <= r; j++) mp[i][j] = (op ? '.': '*'); } return ; } int len = (1 << (n - 1)) * 3; dfs(n - 1, op ^ 1, lt, lt + len-1,l, l + len - 1); dfs(n - 1, op ^ 1, lt, lt + len-1, l + len, r); dfs(n - 1, op ^ 1, lt + len, rt, l, l + len - 1); dfs(n - 1, op, lt + len, rt, l + len, r); } void solve() { int n; cin>>n; dfs(n, 1, 1, (1 << n) * 3, 1, (1 << n) * 3); for(int i = 1; i <= (1 << n) * 3; i++) { for(int j = 1; j <= (1 << n) * 3; j++) cout<< mp[i][j]; cout<<"\n"; } } signed main() { int t = 1; // cin>>t; while(t--) { solve(); } return 0; }
- 1
信息
- ID
- 935
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 23
- 已通过
- 5
- 上传者