2 条题解
-
1
真·数字方阵
观察样例可以发现,分割出的非右上角小方阵最后都会变成 1 0 1 1 的单位方阵,所以可以通过递归来操作,直到最后到达单位长度后就进行操作
参考代码(python)
from sys import stdin,setrecursionlimit from math import inf,ceil,sqrt from collections import Counter,deque def dfs(x:int,y:int,p:int): if p==1: s[x+1][y-1]=1 s[x+1][y]=1 s[x][y-1]=1 return dfs(x+(1<<(p-1)),y,p-1) dfs(x,y-(1<<(p-1)),p-1) dfs(x+(1<<(p-1)),y-(1<<(p-1)),p-1) n=int(stdin.readline()) s=[[0 for _ in range(1<<n)]for i in range(1<<n)] dfs(0,(1<<n)-1,n) for i in s: print(' '.join(map(str,i)))
-
1
递归题。我不相信有人能在赛场上手敲出1024*1024(n=10)的矩阵...
参考代码(C++):
#include <bits/stdc++.h> using namespace std; int m[1030][1030]; void draw(int sx, int sy, int l) { if (l == 1) { m[sx][sy] = 1; return; } draw(sx, sy, l / 2); draw(sx + l / 2, sy, l / 2); draw(sx + l / 2, sy + l / 2, l / 2); } int main() { int n; cin >> n; int len = pow(2, n); draw(1, 1, len); for (int i = 1; i <= len; i++) { for (int j = 1; j <= len; j++) { cout << m[i][j] << " "; } cout << "\n"; } return 0; }
- 1
信息
- ID
- 1093
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 23
- 已通过
- 7
- 上传者