30分,3AC 2WA 5RE五彩斑斓,求助P5461
查看原帖
30分,3AC 2WA 5RE五彩斑斓,求助P5461
317198
MilkyCoffee楼主2020/4/27 16:45

哈罗啊,我又是那个牛奶小咖啡,我又来求助啦

我的开场白依旧:虽然我的代码里有注释,但是依然可读性极差

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;
}
2020/4/27 16:45
加载中...