题目:
“彼得·潘框架”是一种装饰文字,每一个字母都是由一个菱形框架。一个彼得·潘框架看起来像这样 (x是字母,#是框架):
..#..
.#.#.
#.X.#
.#.#.
..#..
然而,只是一个框架会有些沉闷,所以我们每遇到三个字母会把第三个字母用温迪框架把它框起来。温迪框架看起来像这样:
..*..
.*.*.
*.X.*
.*.*.
..*..
当温迪和彼得·潘的框架重叠时,温迪框架覆盖在上面。 (见样例3和4)
输入格式: 一行包含至多15个英文字母的大写字母。
输出格式: 输出使用彼得·潘和温迪框架写成的5行文字。
输入输出样例
输入 #1
A
输出 #1
..#..
.#.#.
#.A.#
.#.#.
..#..
输入 #2
DOG
输出 #2
..#...#...*..
.#.#.#.#.*.*.
#.D.#.O.*.G.*
.#.#.#.#.*.*.
..#...#...*..
输入 #3
ABCD
输出 #3
..#...#...*...#..
.#.#.#.#.*.*.#.#.
#.A.#.B.*.C.*.D.#
.#.#.#.#.*.*.#.#.
..#...#...*...#..
个人解法如下:
import java.util.Scanner;
public class P4327 {
public static void main(String[] args) {
String[][] a = new String[5][500];
Scanner in = new Scanner(System.in);
String n;
n=in.nextLine();/*输入字符串*/
int c=-2;/*用于寻找字母放置位置*/
for(int k=1;k<=n.length();k++){
if((k%3)!=0)/*一般情况(彼得·潘框架)*/{
c=c+4;/*从第三列开始,每个字母差四列,故加四*/
/*第一行*/a[0][c-2]=".";a[0][c-1]=".";a[0][c]="#";a[0][c+1]=".";a[0][c+2]=".";
/*第二行*/a[1][c-2]=".";a[1][c-1]="#";a[1][c]=".";a[1][c+1]="#";a[1][c+2]=".";
/*第三行*/a[2][c-2]="#";a[2][c-1]=".";a[2][c]= String.valueOf(n.charAt(k-1));a[2][c+1]=".";a[2][c+2]="#";
/*第四行*/a[3][c-2]=".";a[3][c-1]="#";a[3][c]=".";a[3][c+1]="#";a[3][c+2]=".";
/*第五行*/a[4][c-2]=".";a[4][c-1]=".";a[4][c]="#";a[4][c+1]=".";a[4][c+2]=".";
if((k>3)&&((k-1)%3==0))/*这个字符串在③后一位*/{
/*第三行*/a[2][c-2]="*";/*避免把前一个遮住*/
}
}
else if((k>=3)&&(k%3==0))/*每次遇到第三个字母*/{
c=c+4;
/*第一行*/a[0][c-2]=".";a[0][c-1]=".";a[0][c]="*";a[0][c+1]=".";a[0][c+2]=".";
/*第二行*/a[1][c-2]=".";a[1][c-1]="*";a[1][c]=".";a[1][c+1]="*";a[1][c+2]=".";
/*第三行*/a[2][c-2]="*";a[2][c-1]=".";a[2][c]= String.valueOf(n.charAt(k-1));a[2][c+1]=".";a[2][c+2]="*";
/*第四行*/a[3][c-2]=".";a[3][c-1]="*";a[3][c]=".";a[3][c+1]="*";a[3][c+2]=".";
/*第五行*/a[4][c-2]=".";a[4][c-1]=".";a[4][c]="*";a[4][c+1]=".";a[4][c+2]=".";
}
}
for(int i=0;i<a.length;i++)/*最后一步,遍历输出*/
{
for(int j=0;j<=c+2;j++)
{
System.out.print(a[i][j]);
}
System.out.println(); //换行
}
}
}
入门蒟蒻,用的方法略蠢,如有不足求轻喷