转载地址:http://blog.csdn.net/qq_33184171/article/details/50826765
题目:http://acm.hrbust.edu.cn/vj/index.php?c=problem-problem&id=354432
代码:
#include<stdio.h>
#include<string.h>
using namespace std;
char maps[3005][3005];
char base[10][10];
int t,n;
int temp[10][10];
char h;
int draw(char maps[3005][3005],int row,int col,int temp[10][10],int ui)//,int op)
{
int ans=1;
for(int i=0; i<n-ui; i++)
{
ans=ans*t;
}
if(ui==1)
{
for(int i=0;i<t;i++)
{
for(int j=0;j<t;j++)
{
if(temp[i][j]==1)
maps[row+i*ans][col+j*ans]=h;
}
}
return 0;
}
for(int i=0; i<t; i++)
{
for(int j=0; j<t; j++)
{
if(temp[i][j]==1)
draw(maps,row+i*ans,col+j*ans,temp,ui-1);
}
}
}
int main()
{
while(~scanf("%d",&t))
{
if(t==0)
return 0;
memset(maps,' ',sizeof(maps));
for(int i=0; i<t; i++)
{
getchar();
for(int j=0; j<t; j++)
{
scanf("%1c",&base[i][j]);
if(base[i][j]!=' ')
h=base[i][j];
}
}
//for(int i=0;i<t;i++)
// printf("%s\n",base[i]);
memset(temp,0,sizeof(temp));
for(int i=0; i<t; i++)
{
for(int j=0; j<t; j++)
{
if(base[i][j]!=' ')
temp[i][j]=1;
}
}
scanf("%d",&n);
draw(maps,0,0,temp,n);
int ans=1;
for(int i=0; i<n; i++)
{
ans=ans*t;
}
//printf("%d\n",ans);
for(int i=0;i<ans;i++)
{
maps[i][ans+1]='\0';
}
//printf("%s\n",maps[0]);
//printf("%s\n",maps[ans-1]);
for(int i=0; i<ans; i++)
{/*
//for(int j=0;j<ans;j++)
//{
printf("%s",&maps[i]); //printf 超时
//}
printf("\n");*/
puts(maps[i]);
}
}
}
无限超时。
经全神指点,用puts。宝宝心里苦。