算法题型的个人练习_01
来源:互联网 发布:ba无标度网络模型 编辑:程序博客网 时间:2024/06/05 19:42
题目 算法实现,输入一个正整数n,打印2*n行,如当输入n=4时,输出
1
2*3
4*5*6
7*8*9*10
7*8*9*10
4*5*6
2*3
1
个人认为这道题的难点在于下半部分的数字记录。在实现方面有很多种方法,其中一种方法是在一个for循环里面分两个小循环,一个打印上半部分,一个打印下半部分,作为判断条件就是当循环到第n次时,n次以前的就执行上半部分的循环,n次以后就执行下半部分的循环。
<span style="white-space:pre"></span>for(int j = 0; j < 2*i+1; j++){if(j != 0 && j % 2 != 0){System.out.print("*");}else {System.out.print(k);k++;}}System.out.println("");上半部分的实现,其中判断是否输出*时,当j为奇数时输出,k是作为输出数,每输出一个便加1.
<span style="white-space:pre"></span>k = k - 1;b = k - (n - a) ;k = b;for(int j = 0; j < ((2*n-1)-(i-n)*2); j++){if(j != 0 && j % 2 != 0){System.out.print("*");}else {System.out.print(b);b++;}}a++; System.out.println("");
下半部分的实现。下半部分要考虑的是输出的位数要和上半部分相对应,且数字也要对应。其中对输出位数的计算为(2*n-1)-(i-n)*2,(2*n-1)是上半部分最后一行输出的位数,然后减去一个等差得出需要输出的位数。对于输出数的计算,我先定义一个新的变量a,它随着小循环结束加1。k=k-1是因为上半部分结束时k任然加1,所以要先减去1得到上半部分输出的最后一个数字。b = k - (n - a) 这句主要作用是得到每一行开头的数字,方便输出,最后k=b的作用是记录上一行的第一个数字。
public class Algorithm {public void test(int n){int k = 1;//上半部分输出大小及下半部分的记录int a = 1;//下半部分涉及到的算法int b = 0;//下半部分输出数字大小for(int i = 0; i < 2*n; i++){if (i < n){for(int j = 0; j < 2*i+1; j++){if(j != 0 && j % 2 != 0){System.out.print("*");}else {System.out.print(k);k++;}}System.out.println("");}else {k = k - 1;b = k - (n - a) ;k = b;for(int j = 0; j < ((2*n-1)-(i-n)*2); j++){if(j != 0 && j % 2 != 0){System.out.print("*");}else {System.out.print(b);b++;}}a++; System.out.println("");}}}public static void main(String[] args){Algorithm a = new Algorithm();Scanner s = new Scanner(System.in);int n = s.nextInt();a.test(n);}}
完全代码
512*34*5*67*8*9*1011*12*13*14*1511*12*13*14*157*8*9*104*5*62*31
当输入5时得到的输出。
0 0
- 算法题型的个人练习_01
- 算法题型的个人练习_02
- 算法题型的个人练习_03
- 矩阵算法的基本题型
- 算法_01
- 每日练习_01
- 简单的桶排序(个人练习算法)
- 个人的MATLAB练习
- oracle10g上机练习题型总结
- Vue经典题型demo 练习
- ACM 题型算法分类
- 贪心算法 题型总结
- 基础练习2_01字串
- 去年的算法作业题_01背包_矩阵相乘
- 个人算法练习库-go语言版
- 算法导论 第三章 函数的增长,3.1练习个人解答(Sor)
- ACM 题型算法分类总结
- POJ--ACM 题型算法分类
- leetcode 1:Two Sum
- Java final 关键字到底修饰了什么?
- 《Java 源码分析》:Java NIO 之 ServerSocketChannel
- <机器学习实战>——k近邻算法
- Flume1.7.0+Elasticsearch1.7.5+Kibana4.11日志收集分析系统环境搭建
- 算法题型的个人练习_01
- 源码-Oracle数据库管理-第十章-数据表操作-Part 4(删除数据)
- 欧拉工程第21题 计算10000以下所有相亲数之和
- Java中抛出的内存异常总结
- caffe 实例笔记 2 LeNet详细解读及实现
- 虚拟机能否上网的判断方法
- Tensorflow学习笔记(二)——MNIST机器学习入门
- 【Codewars-求矩阵行列式】python
- Mac与Phy组成原理的简单分析