题意:打印图形
解题思路:画图找规律,找到递推之间坐标的关系,发现自己对知识点的不掌握光宇‘\0’
题目链接:poj083
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int n,sum;//3^6=729
const int N=1000;
char vis[N][N];
void B(int num,int x,int y)
{
if(num==1)
vis[x][y]='X';
else
{
int m=pow(3,num-2);
B(num-1,x,y);//左上 当前
B(num-1,x,y+2*m);//坐左下
B(num-1,x+2*m,y);//右上
B(num-1,x+2*m,y+2*m);//右下
B(num-1,x+m,y+m);//中间
}
}
int main()
{
while(scanf("%d",&n)!=EOF&&n!=-1)
{
memset(vis,' ',sizeof(vis)); //使用了memset()所以要将vis[i][sum]='\0';
sum=pow(3,n-1);
B(n,0,0);
for(int i=0;i<sum;i++)
{
vis[i][sum]='\0';//不加‘\0’不结束
printf("%s",vis[i]); //cout<<vis[i]<<endl;//竟然过了,总报错
printf("\n");
}
printf("-\n");
}
return 0;
}