PTA刷题记录(1)

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

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

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

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

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

  代码以下;import

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();
    }

}循环

相关文章
相关标签/搜索