题解
查看原帖
题解
1443850
Lxmz2014楼主2024/12/16 18:46

这道题主要考察分治的知识点:
(你可以使用2维数组) 本题可以使用递归,当正方形长度为零时,跳出void (代码如下)

#include<bits/stdc++.h>
using namespace std; 
int a[1050][1050];
void f(int n,int x,int y){//n表示正方形边长,x,y表示坐标
	if(n==0) return;
	for(int i=x;i<x+(1<<n-1);i++){
		for(int j=y;j<y+(1<<n-1);j++){
			a[i][j]=0;
		}
	}
	f(n-1,x+(1<<n-1),y);
	f(n-1,x,y+(1<<n-1));
	f(n-1,x+(1<<n-1),y+(1<<n-1));
}
int main() {
	int n;
	cin>>n;
	for(int i=0;i<(1<<n);i++){
		for(int j=0;j<(1<<n);j++){
		    a[i][j]=1;
	    }
	}
	f(n,0,0);
	for(int i=0;i<(1<<n);i++){
		for(int j=0;j<(1<<n);j++){
			cout<<a[i][j]<<' ';
		}cout<<endl;
	}
	return 0;
}

划重点了:请使用<<函数,不要使用pow函数因为pow的时间复杂度是O(n)。

2024/12/16 18:46
加载中...