3 条题解
-
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; }
信息
- ID
- 935
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 23
- 已通过
- 5
- 上传者