团队天梯赛-------(2)分值:20

  题目要求:你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
                      *****
                       ***
                        *
                       ***
                      *****

          所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

        给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

  解题思路:运用分治思想将此沙漏看做上下两部分,合理利用循环对此提进行解答。

  代码如下;

import java.util.*;
public class pta_2 {

public static void pic(int q,String w) {
        final int SIZE = 1000;
        int[] a = new int[SIZE];
        int[] b = new int[SIZE];        
        int i = 0,j = 1,k = 0;
        int temp = 0,l = 0,temp1 = 0,temp2 = 1,temp3 = 0;
        int n = 0,f = 0;
        for(i = 0;i<SIZE; i++) {    
            a[i] = j;
            j+=2;
        }
        b[0] = 1;
        for(i = 1;i<SIZE; i++) {
            b[i] = b[i-1] + 2 * a[i];
        }
        for(i = 0; i < SIZE;i++) {
            if(q > b[i] && q < b[i+1]) {
                temp2 = i;
                break;
            }
            else if(q == b[i]) {
                temp2 = i;
                break;
            }
        }
        temp = a[temp2];
        temp1 = temp;
        for(i = 0; i < temp; i++) {
            if(i < temp / 2){
                for(k = 0; k < (temp - temp1) / 2;k++) {
                    System.out.printf("%1s"," ");
                }
                for(l = 0; l < temp1;l++) {
                    System.out.print(w);
                }
                temp1-=2;
                System.out.println();
            }
            else{
                    for(f = 0; f < ((temp - temp1) / 2);f++) {
                        System.out.printf("%1s"," ");
                    }
                    for(n = 0;n < temp1;n++) {
                        System.out.print(w);
                    }
                    temp1+=2;
                    System.out.println();        
                }
        
        }
        System.out.print(q - b[temp2]);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    
        Scanner input = new Scanner(System.in);
        
        int count = input.nextInt();
        String fuhao = input.next();
        pic(count,fuhao);
        input.close();
    }

}

PTA刷题记录(1)的更多相关文章

  1. PTA刷题记录

    考虑到PAT甲级考试和开学后的XCPC比赛,决定寒假把PAT (Advanced Level) Practice刷完,进度条会在这篇博客下更新.由于主要以记录为主,大体上不会像单篇题解那么详细,但是对 ...

  2. PTA刷题记录(3)

    团队天梯赛-------(3)分值:15 给定一个 k 位整数 N=d​k−1​​10​k−1​​+⋯+d​1​​10​1​​+d​0​​ (0≤d​i​​≤9, i=0,⋯,k−1, d​k−1​​ ...

  3. PTA刷题笔记

    PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑 ...

  4. PE刷题记录

    PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...

  5. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

  6. Leetcode刷题记录(python3)

    Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

  7. 刷题记录:[HarekazeCTF2019]encode_and_encode

    目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...

  8. 刷题记录:[De1CTF 2019]Giftbox && Comment

    目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...

  9. 刷题记录:[强网杯 2019]Upload

    目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

随机推荐

  1. springboot结合jpa

    idea中新建springboot项目,引入spring-boot-starter-data-jpa依赖 application.yml中配置数据库连接,示例如下: spring: datasourc ...

  2. Windows 10 删除C盘的用户,恢复技巧

    起因 入域不成功,然后强制删除了C盘 Users里面 账户 然后再进行入域的时候就入域不成功了,如果再进行登录就会提示 无法登录到你的账户 通常可以通过从你的账户注销,然后重新登录解决此问题 如果不立 ...

  3. KafkaStream低级别API

    开发者可以通过Processor接口来实现自己的自定义处理逻辑.接口提供了Process和Punctuate方法. 其中:Process方法用于处理接受到的消息 Punctuate方法指定时间间隔周期 ...

  4. Liang-Barsky算法

    Liang-Barsky算法 在Cohen-Sutherland算法提出后,梁友栋和Barsky又针对标准矩形窗口提出了更快的Liang-Barsky直线段裁剪算法. 梁算法的主要思想: (1)用参数 ...

  5. vc++木马源码免杀一些常用方法

    1.字符串连接 ////////////////////////////////////////////////////////////把字符串"canxin"连接起来(字符串连接 ...

  6. java-try,return和finally相遇时的各种情况

    今天碰到了这样一个问题:使用try,return和finally会碰到的各种情况1,try中有return时,执行顺序:2,try和finally中都有return时,执行顺序:3,运算代码在fina ...

  7. POJ 3020 Antenna Placement(二分图 匈牙利算法)

    题目网址:  http://poj.org/problem?id=3020 题意: 用椭圆形去覆盖给出所有环(即图上的小圆点),有两种类型的椭圆形,左右朝向和上下朝向的,一个椭圆形最多可以覆盖相邻的两 ...

  8. .Net Core3.0 配置Configuration

    准备 .NET core和.NET项目配置上有了很大的改变,支持的也更加丰富了比如命令行,环境变量,内存中.NET对象,设置文件等等..NET项目我们常常把配置信息放到webConfig 或者appC ...

  9. 玩转 RTC时钟库 DS1302

    1.前言     最近博主在弄8266编程的时候,偶然发现两个全新时钟模块压仓货: DS1302 DS3231     为了避免资源浪费以及重复编写代码,博主还是抱着尝试的心态去寻找能够同时兼容 DS ...

  10. Prism - MVVM模式下,StackPanel中增加和删除View(UserControl)

    一.现实效果 在学习Prim,看官方的例子 03-CustomRegions 只是一个简单演示,这里用MVVM方式做个了相对完整的例子,实现效果如图: 点击Add,右侧StackPanel中增加一个V ...