hduoj 2074かご

2398 ワード

かごをたたむ
Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 12122    Accepted Submission(s): 3122
Problem Description
必要に応じて、大きさの差のあるかごを重ねて、上から見下ろすと、かごの色が交錯します.この仕事は今コンピューターで完成させなければならないので、あなたの次第です.
 
Input
入力は1つの3元グループで、それぞれ、外かごサイズn(nは0 
Output
出力が重なったかごのパターンは、中心の花色と外かごの花色文字が内層から交錯して重なり、複数のかごが重なると、最も外かごの角が常に磨かれます.かごとかごの間には1行の間隔があるべきだ.
 
Sample Input

   
   
   
   
11 B A 5 @ W

 
Sample Output

   
   
   
   
AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAAA @@@ @WWW@ @W@W@ @WWW@ @@@

 
問題の意味は明確で、印刷パターンで、真ん中のアルファベットは最初のアルファベットですが、この問題はとても穴があいていて、穴の1:各グループのデータの間に1つの改行があります;穴:右上と右下はスペースでなければなりません.
コードは1周1周制御で、簡単明瞭です!
#include <stdio.h>
#include <string.h>
char a[80][80];	
char c,d,e;
int n;
void f(int v)
{
	int i,j;
	char t;
	if(v%2==1)
		t=c;
	else
		t=d;
	for(i=v;i<=n+1-v;i++)
	{
		a[i][v]=t;
		a[i][n+1-v]=t;
	}
	for(j=v;j<=n+1-v;j++)
	{
		a[v][j]=t;
		a[n+1-v][j]=t;
	}
		
}
int main()
{
	
	int i,j,t,k=1;
	while(scanf("%d %c %c",&n,&c,&d)!=EOF)
	{
		if(k!=1)
			printf("
"); if(n==1) { printf("%c
",c); continue; } t=n/2+1; if(t%2==0) { e=c;c=d;d=e; } for(i=1;i<=t;i++) f(i); a[1][n]=a[1][1]=a[n][1]=a[n][n]=' '; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%c",a[i][j]); printf("
"); } k++; } }