代码
f() 函数:输入矩阵的左上角顶点坐标和n;然后将该矩阵的 左上角部分值变为‘0’,其余三部分则继续处理;结束条件当 n=1时终止递归。
f1() 函数:计算2^n的值。
main() 函数:定义n最大时的二维数组,并初始化为‘1’。
#include<bits/stdc++.h>
using namespace std;
void f(int x,int y,int n);
int f1(int n);
char s[1024][1024];
int main(){
int i,j,n;
memset(s,'1',sizeof(s));
cin>>n;
f(0,0,n);
for(i=0;i<f1(n);i++){
for(j=0;j<f1(n);j++)
cout<<s[i][j]<<" ";
cout<<endl;
}
return 0;
}
void f(int x,int y,int n){
int i,j;
if(n==1){
s[x][y]='0';
return;
}
for(i=x;i<x+f1(n-1);i++)
for(j=y;j<y+f1(n-1);j++)
s[i][j]='0';
f(x,y+f1(n-1),n-1);
f(x+f1(n-1),y,n-1);
f(x+f1(n-1),y+f1(n-1),n-1);
}
int f1(int n){
int i,m=1;
for(i=0;i<n;i++)
m*=2;
return m;
}