zoukankan      html  css  js  c++  java
  • HDU 2074 叠筐

    叠筐

    Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 10111 Accepted Submission(s): 2548


    Problem Description
    需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
     
    Input
    输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
     
    Output
    输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
     
    Sample Input
    11 B A 5 @ W
     
    Sample Output
    AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAAA @@@ @WWW@ @W@W@ @WWW@ @@@
     


     总结: 这道题 水题一道,关键有三点要注意 1:中间的花色问题,我们用m=(n-1)/2;m=m%2来控制中间的花色;2:要留意n==1的情况, WA了好几次,最后仔细检查了一下,才发现少了这种情况;3:WA的问题解决之后有出现了PE问题,在仔细看看题才知道,只是在叠筐与叠筐之间(即两个输出之间)才有空行。

     

    import java.util.*;
    import java.io.*;
    
    public class T2074 {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(new BufferedInputStream(System.in));
    		int bh=0;
    		while (sc.hasNext()) {
    			int n = sc.nextInt();
    			String s1 = sc.next();
    			String s2 = sc.next();
    			// 控制叠筐与叠筐之间(即两个输出之间)的空行
    			if(bh==0) bh=1;
    			else{
    				System.out.println();
    			}
    			String str[][] = new String[81][81];
    			//控制中间的花色
    			int m = (n - 1) / 2;
    			if (m % 2 != 0) {
    				String t;
    				t = s1;
    				s1 = s2;
    				s2 = t;
    			}
    			//分两种情况,n==1和n!=1的情况
    			if (n == 1)
    				System.out.println(s1);
    			else {
    				String st = " ";
    				for (int i = 0; i < n - 2; i++) {
    					st += s1;
    				}
    				st += " ";
    				str[0][0] = st;
    				boolean bb = true;
    				for (int i = 1; i <= n / 2; i++) {
    					boolean b = true;
    					int k = 0;
    					for (int j = 1; j <= i; j++) {
    						if (b == true) {
    							b = false;
    							str[i][k++] = s1;
    						} else {
    							b = true;
    							str[i][k++] = s2;
    						}
    					}
    					if (bb) {
    						bb = false;
    						for (int j = i; j < n - i; j++) {
    							str[i][k++] = s2;
    						}
    					} else {
    						bb = true;
    						for (int j = i; j < n - i; j++) {
    							str[i][k++] = s1;
    						}
    					}
    					for (int j = 1; j <= i; j++) {
    						if (b == false) {
    							b = true;
    							str[i][k++] = s1;
    						} else {
    							b = false;
    							str[i][k++] = s2;
    						}
    					}
    				}
    				for (int i = 0; i <= n / 2; i++) {
    					for (int j = 0; j < n; j++) {
    						if (str[i][j] != null)
    							System.out.print(str[i][j]);
    					}
    					System.out.println();
    				}
    				for (int i = n / 2 - 1; i >= 0; i--) {
    					for (int j = 0; j < n; j++) {
    						if (str[i][j] != null)
    							System.out.print(str[i][j]);
    					}
    					System.out.println();
    				}
    			}
    		}
    	}
    }
    


     


     

  • 相关阅读:
    opencv图片压缩视频并读取
    python常见模块统计
    MySQL索引及优化
    web开发框架之 Tornado
    Tornado项目基本架构
    python闭包以及装饰器
    python语法糖
    python os模块
    TCP中的3次握手和4次挥手
    Python常见的数据类型方法
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3221518.html
Copyright © 2011-2022 走看看