P4327 [COCI2006-2007#1] Okviri(JAVA解法)

题目:

“彼得·潘框架”是一种装饰文字,每一个字母都是由一个菱形框架。一个彼得·潘框架看起来像这样 (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();	//换行
        }

    }
}

入门蒟蒻,用的方法略蠢,如有不足求轻喷

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值