如何用Java打出DNA图案_DNA (Java代码)

解题思路:

1、这个题在做完了提交成功之后,去看题解。大致扫了一下别人的代码,长度都差不多。那可能就没有一个好的公式了只能暴力解题了。

2、第一步,求出一共要打印多少行,这个很简单,直接就是    a + (a-1) * (b-1)

3、然后就是去输出每一行数据。每一行又分三个部分。前置空格  中间空格  X

4、可以把这个图形看成一个对称的图形,我们每次只需要考虑一个对称的图形,其他的只需要和第一个一样。

5、至于 前置空格  和  中间空格 的规律就很好看出来了,这里就不说了可以去看看下面的代码

注意事项:

最后每次打印完的时候不要忘记了输出一个 换行

参考代码:

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

int N = in.nextInt();

int k,front,flag,after,row;

for (int i = 0;i 

int a = in.nextInt();

int b = in.nextInt();

front = 0;

flag = 1;

row = a + (a-1)*(b-1);          //一共有多少行

after = a - 2;                        //最多空个数

for (int j = 0; j 

for (int m = 0;m 

System.out.print(" ");

System.out.print("X");

// 进入了这个判断,就说明,该上下倒置了

// flag > 0   说明是输出正金字塔   小于 0  就是输出负金字塔

if (front == a/2 || (front == 0 && j > 0)){

flag = -flag;

if (flag 

front--;

after = 1;

}else{

after = a - 2;

front++;

}

//这句话就是判断,当前行,是否是 之需要打印一个 X,如果是就换行,然后 结束当层循环

if ( ((front+1) == a/2 && after == 1)  || (  (front-1) == a/2 && after == a-2  ) ){

System.out.println();

continue;

}

}

else {

if (flag > 0)

front++;

else

front--;

}

for (k = 0;k 

System.out.print(" ");

System.out.println("X");

if (flag > 0)

after = after - 2;

else

after = after + 2;

}

// 当前一次结束后,换行   这是格式要求

System.out.println();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值