解题思路:定义一个二维数组用于存放'X',' ',
例如:打印一个5行的DNA
X000X
0X0X0
00X00
0X0X0
X000X
3行的DNA为:
x0x
0x0
x0x
这里可以看出当行数和列数相等时(i = j),或者行数等于总行数 - 当前列数 -1时,则二维数组中的元素为'X',(i =a -j -1)
否则其他的为空格' '
然后可以定义一个二维数组, new int [n][2],其中行代表要求输入的DNA组数,两列分别表示要打印的行数和重复度
参考代码:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int [][] arr = new int [n][2]; // 其中行代表要求输入的DNA组数,两列分别表示要打印的行数和重复度 for(int i = 0;i< n;i++){ arr[i][0] = sc.nextInt(); arr[i][1] = sc.nextInt(); } for(int i = 0;i<n;i++){ getDNA(arr[i][0],arr[i][1]); // 调用方法打印DNA System.out.println(); // 每打印完一组后空一行 } } public static void getDNA(int a,int b){ char [][] c = new char [a][a]; //定义二维数组,打印a行a列的'x' for (int i = 0; i < a; i++) { for (int j = 0; j < a; j++) { ////当前行数和列数相等 或 当前行数等于总行数 - 当前列数 -1 则为元素赋值'x',否则为空格 if (i == j || i == a - j - 1) c[i][j] = 'X'; else c[i][j] = ' '; } } //先打印一组DNA for(int i = 0;i<a;i++){ for(int j = 0;j<a;j++){ System.out.print(c[i][j]); } System.out.println(); } //打印b-1组DNA for(int k = 0;k<b-1;k++) { //如果重复度b大于1时,则从第二行开始打印 if(b>1) { for (int i = 1; i < a; i++) { for (int j = 0; j < a; j++) { System.out.print(c[i][j]); } System.out.println(); } } } }
0.0分
1 人评分