参考代码:

public void dna() {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    for (int i = 0; i < n; i++) {
        int a = sc.nextInt();
        int b = sc.nextInt();
        char[][] arr = new char[a][a];
        //两条对角线的公式分别是j+k==a-1,j==k
        for (int j = 0; j < a; j++) {
            for (int k = 0; k < a; k++) {
                    //如果是对角线就直接输出
                if (j+k==a-1||j==k) {
                    arr[j][k] = 'X';
                 //如果是如果是下面那副图的彩色区域
                }else if(j>k || j+k<a-1){
                    arr[j][k] = ' ';
                 //s顶换行
                }else {
                    arr[j][k] = 's';
                }
            }
        }
        for (int j = 0; j < b; j++) { //输出DNA
            if (j == 0) { //第一遍时,需要输出DNA的第一行
                for (int m = 0; m < a; m++) {
                    for (int k = 0; k < a; k++) {
                        if (arr[m][k] != 's') {  //把二维数组内为s的都排除不输出,就得到我们想要的答案了
                            System.out.print(arr[m][k]);
                        }
                    }
                    System.out.println();
                }
            } else {    //到了第二遍重复,不能输入DNA第一行,故从第二行开始,其他不变
                for (int m = 1; m < a; m++) {
                    for (int k = 0; k < a; k++){
                        if(arr[m][k]!='s') {
                            System.out.print(arr[m][k]);
                        }
                    }
                    System.out.println();
                }
            }

        }
        System.out.println();
    }
}

屏幕截图 2021-10-11 163124.png

点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论