题目链接:http://poj.org/problem?id=2083

这题不能用G++提交...

见到两次知道有递归的写法,然而并不会,这次发现并不难;

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std; int len[]= {,}, s[][]; void dfs(int n, int x, int y)
{
s[x][y]=;
if(n==)return ; int m = len[n]; dfs(n+, x, y);///左上
dfs(n+, x, y+*m);///左下
dfs(n+, x+*m, y);///右上
dfs(n+, x+m, y+m);///中间
dfs(n+, x+*m, y+*m);///右下
} int main()
{
memset(s, , sizeof(s));
for(int i=; i<=; i++)
len[i]=*len[i-];
dfs(, , );
int n;
while(scanf("%d", &n), n!=-)
{
for(int i=; i<=len[n]; i++)
{
for(int j=; j<=len[n]; j++)
{
if(s[i][j]==)printf("X");
else printf(" ");
}
printf("\n");
}
printf("-\n");
}
return ;
}

下面是我写的比较恶心的代码:

#include<stdio.h>
#include<string.h>
#define N 903
#define met(a, b) memset(a, b, sizeof(a)) struct node
{
int len;
char s[N][N];
}a[]; void P1(char s[][N], int X1, int X2, int Y1, int Y2, char s0[][N])
{
for(int i=X1, p=; i<=X2; i++, p++)
{
for(int j=Y1, q=; j<=Y2; j++, q++)
{
s[i][j] = s0[p][q];
}
}
}
void P2(char s[][N], int X1, int X2, int Y1, int Y2)
{
for(int i=X1; i<=X2; i++)
{
for(int j=Y1; j<=Y2; j++)
{
s[i][j] = ' ';
}
}
}
void Init()
{
met(a, );
a[].s[][] = 'X';
a[].len = ; for(int i=; i<=; i++)
{
int n = a[i-].len;
a[i].len = n*; P1(a[i].s, , n-, , n-, a[i-].s);
P2(a[i].s, , n-, n, *n-);
P1(a[i].s, , n-, *n, *n-, a[i-].s); P2(a[i].s, n, *n-, , n-);
P1(a[i].s, n, *n-, n,*n-, a[i-].s);
P2(a[i].s, n, *n-, *n, *n-); P1(a[i].s, *n, *n-, , n-, a[i-].s);
P2(a[i].s, *n, *n-, n, *n-);
P1(a[i].s, *n, *n-, *n, *n-, a[i-].s);
}
} int main()
{
Init();
int n;
while(scanf("%d", &n), n!=-)
{
for(int i=; i<a[n].len; i++)
{
for(int j=; j<a[n].len; j++)
printf("%c",a[n].s[i][j]);
printf("\n");
}
printf("-\n");
}
return ;
}

最新文章

  1. 【WPF】GridLengthAnimation
  2. HTML5中的canvas基本概念及绘图
  3. 数据库添加数据I
  4. iOS开发——总结篇&amp;关键字介绍
  5. javascript笔记——图片大小检测
  6. WPF--ComboBox数据绑定
  7. 【8】JAVA---地址App小软件(AddrDaoFile .class)(数据层)
  8. IE下判断IE版本语法使用
  9. 安装Eclipse Color Theme
  10. mac os X中关于dayone缓存的实际文件位置
  11. 深入浅出Java concurrent
  12. Jmeter(二十九)_dotnet搭建本地接口服务
  13. 调用webservice 的时候没法输入参数
  14. API:详解 pandas.read_csv
  15. 利用altium怎么生成PDF及怎么1:1打印文档
  16. Jquery中.attr与.prop的区别
  17. [Android Pro] Android 手机root 并 安装 BusyBox pro 和 Android Terminal Emulator
  18. 关于.net和java des加密
  19. ng 自定义服务
  20. Elasticsearch安装 + Head插件安装 + Bigdesk插件安装

热门文章

  1. cocos2dx中CCTableView乱位问题歪解
  2. [pwm]PWM的输入捕捉模式
  3. 缓存技术PK:选择Memcached还是Redis(转)
  4. 多媒体开发之分场图像和交错图像interlacing---一个破解版的迅雷云点播网站
  5. IE8 frameset SESSION丢失
  6. C#中Uri类的解释
  7. pybot/robot命令参数说明【dos下执行命令pybot.bat --help查看】
  8. Text Particle Systems
  9. 1853: [Scoi2010]幸运数字[容斥原理]
  10. egret.Capabilities 在pc和移动端输出值