上次做过几乎一样的题,然而到校赛上就懵逼了
.特发此博客,以此哀悼
题意是打印三角形,且最后无空格
上代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define MAX 3010
char maps[MAX][MAX];
void print(int n, int x, int y)
{
if(n==1)
{
maps[x][y+1]=maps[x+1][y]=maps[x+1][y+2]='O';
return ;
}
else
{
int m = pow(2, n-1); //选择上次分形度(n-1) m为高, 2*m为宽;
print(n-1, x, y+m);
print(n-1, x+m, y);
print(n-1, x+m, y+2*m);
}
}
int main()
{
int t;
scanf("%d", &t);
for(int i=0; i<t; i++)
{
int n;
memset(maps, ' ', sizeof(maps)); //初始化为空格
scanf("%d", &n);
int m=pow(2, n); //选择此次分形度
print(n, 0, 0);
for(int i=0; i<m; i++)
for(int j=2*m-1; j>=0; j--){
if(maps[i][j-1]=='O')
{maps[i][j]='\0'; break;} //倒序查找 设置'\0';
}
for(int i=0; i<m; i++)
{
printf("%s\n", maps[i]);
}
}
}
版权声明:本文为icodeajk原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。