团队天梯赛-------(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();
    }

}

最新文章

  1. iOS 应用内的系统复制粘贴菜单显示的语言非中文
  2. MVC之前的那点事儿系列(2):HttpRuntime详解分析(上)
  3. How To Call Stored Procedure In Hibernate
  4. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
  5. Python之路----数据类型
  6. 每日一水之strcmp用法
  7. 按比例缩放DIV
  8. Android&amp;Java面试题大全—金九银十面试必备
  9. .NET:bin 与 obj,Debug 与 Release ,区别与选择
  10. 支付宝当面付功能demo运行解读
  11. unity Transform.TransformPoint
  12. Oracle Schema Objects——Index
  13. 支持xcode6的缓动函数Easing以及使用示例
  14. GoF设计模式三作者15年后再谈模式
  15. Project has no project.properties file! Edit the project properties to set one.
  16. C#只启动一个进程的代码
  17. C# 真正完美的 汉字转拼音
  18. SAP ABAP Development Tools in Eclipseのセットアップ
  19. c#中使用NetCDF存储二维数据的读写操作简单应用
  20. LinkedHashMap和HashMap的区别

热门文章

  1. MQTT介绍与使用
  2. TCP三次握手、四次握手
  3. LeetCode_155-Min Stack
  4. Integer类型与int的==比较
  5. Java序列化总结(最全)
  6. 腾讯新闻抢金达人活动node同构直出渲染方案的总结
  7. 程序员成长的四个简单技巧,你 get 了吗?
  8. 06_基本框架_VMCS_GuestArea
  9. Mongoose-modified-at 时间自动记录插件介绍
  10. 该虚拟机似乎正在使用中。 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。 配置文件: ***.vmx。