李聪


私信TA

用户名:uq_77396067382

访问量:6759

签 名:

等  级
排  名 299
经  验 5604
参赛次数 0
文章发表 23
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:   每一组的总行数为   a*b-(b-1)     

                 前端的空白个数数顺序 从 0 递增到(a-1/2)个空白 再递减到 0

                 因为每行都有a位  中间部分的空白个数为 (a-2(相当于2个X)-前端的空白*2)

                 a+1/2行 以及 从 a+1/2行开始 递增 a-1行的不需要输出第二个X

                 行数为a*b-(b-1)

                     行数  前空白个数  中空白个数

   XoooX          1        0      x         3            x                       

   oXoXo          2        1      x         1            x

   ooXoo          3        2      x

   oXoXo          4        1      x         1            x

   XoooX          5        0      x         3            x

   oXoXo          6        1      x         1            x

   ooXoo          7        2      x

   oXoXo          8        1      x         1            x

   XoooX          9        0      x         3            x

参考代码:

import java.util.Scanner;
public class Test01 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n[][]=new int [scanner.nextInt()][2];
        for (int i = 0; i < n.length; i++) {//存入二维数组
			for (int j = 0; j < n[i].length; j++) {
				n[i][j]=scanner.nextInt();
			}
		}
        for (int i = 0; i < n.length; i++) {  //循环组
        	int a=n[i][0]*n[i][1]-(n[i][1]-1);  //获得该组总行数
        	int k1=0;//记录前端空白
        	int t=1;//控制前端空白
        	int p=0;//记录行数
        	for (int j = 1; j <= a; j++) {  //循环行
				for (int j2 = 0; j2 < k1; j2++) {  //输出前端空白
					System.out.print(" ");
				}
        		if (k1==0) {  //达到0后前端空白开始递增
					t=1;
				}
        		else if(k1==(n[i][0]-1)/2){ //达到要求后前端空白开始递减
					t=-1;
				}
        		System.out.print("X");//输出第一个X
        		for (int j2 = 0; j2 < n[i][0]-2-(k1*2); j2++) { //中间部分空白
					 System.out.print(" ");
				}
        		if (j==(n[i][0]+1)/2) {
					 p=1;
				}
        		k1+=t; //控制前端空白
        		p++;  
        		if (j==(n[i][0]+1)/2||p==n[i][0]) { //找到只有一个X的行
					 p=1;
					System.out.println();
					continue; //跳出不打印第二个X
				}
        		System.out.println("X");//输出第二个X
			}
        	System.out.println();
		}
		}
    }


 

0.0分

11 人评分

  评论区

逻辑太
复杂
2021-11-19 17:31:40
  • «
  • 1
  • »