哈罗啊,我又是那个牛奶小咖啡,我又来求助啦
我的开场白依旧:虽然我的代码里有注释,但是依然可读性极差
PS:老规矩,帮助送关注
我的思路就是分治
#include <iostream>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <string>
using namespace std;
int n;
int a[15][15];
void f(int x, int l, int q) {
// 边长 横坐标 纵坐标
if (x == 2) {
a[l][q] = 0; // 如果是2×2的,就把左上角的赋值为0再return
return;
}
for (int i = 0; i < x / 2; i++) {
for (int j = 0; j < x / 2; j++) {
a[l + i][q + j] = 0; // 普通的赋值为0
}
}
f(x / 2, l + x / 2, q); // 右上角方阵
f(x / 2, l, q + x / 2); // 左下角方阵
f(x / 2, l + x / 2, q + x / 2); // 右下角方阵
return; // 返回
}
int main() {
cin >> n;
int m = pow(2, n); // 赋值
for (int i = 1; i <= m; i++) { // 输入
for (int j = 1; j <= m; j++) {
a[i][j] = 1;
}
}
f(m, 1, 1); // 调用函数
for (int i = 1; i <= m; i++) { // 输出
for (int j = 1; j <= m; j++) {
cout << a[i][j] << ' ';
}
cout << endl;
}
return 0;
}