题意很简单,根据图形上指示的情况重复图案,然后输出结果
但是为什么G++会超时?据说用getchar读入能快很多。。
1 # include <cstdio>
2 # include <cstring>
3 # include <cstdlib>
4 using namespace std;
5 char t[2][3500][3500];
6 void emptyline(char *str,int len)
7 {
8 str[0]='\0';
9 for(int i=0;i<len;i++)
10 strcat(str," ");
11 }
12 int main()
13 {
14 int n;
15 char str[3500];
16 while(true)
17 {
18 gets(str);
19 n=atoi(str);
20 if(!n) break;
21 for(int i=0;i<n;i++)
22 gets(t[0][i]);
23 char ori[10][10];
24 for(int i=0;i<n;i++)
25 strcpy(ori[i],t[0][i]);
26 gets(str);
27 int repeat=atoi(str);
28 bool turn=0;
29 while(--repeat)
30 {
31 int len=strlen(t[turn][0]);
32 emptyline(str,len);
33 for(int i=0;i<n*len;i++)
34 t[!turn][i][0]='\0';
35 for(int i=0;i<n;i++)
36 for(int j=0;j<n;j++)
37 if(ori[i][j]!=' ')
38 for(int k=0;k<len;k++)
39 strcat(t[!turn][len*i+k],t[turn][k]);
40 else
41 for(int k=0;k<len;k++)
42 strcat(t[!turn][len*i+k],str);
43
44
45
46 turn=!turn;
47 // for(int i=0;i<strlen(t[turn][0]);i++)
48 //printf("%s\n",t[turn][i]);
49 //system("pause");
50 }
51 for(int i=0;i<strlen(t[turn][0]);i++)
52 printf("%s\n",t[turn][i]);
53 }
54 return 0;
55 }