关于 蓝桥杯 打印六芒星 的 另类方法
关于 蓝桥杯 打印六芒星 的 另类方法
刚入门不久的人也能做出来的一种方法
或者了解很深的人也可能不知道的一个方法
原题如下
【输入格式】
输入一行包含一个整数 n。
【输出格式】
输出一个六芒星,表示满足题意的图形。
【样例输入】
3
4
【样例输出】
【评测用例规模与约定】
对于所有评测用例,1 ≤ n ≤ 20。
另类的思路
首先我 想到了把它拆成上层镂空三角形与下层的镂空三角形,
再让下层的移点位置就可以了 ,那么怎么把它们合在一起?
注意到原图是仅由两种元素组成的,所以我可以做一个类似于显示屏的东西。把三角形的每一个位置的信息传递给显示屏的每一个单元,于是需要一个二维数组来充当显示屏。再用类似于遍历二维数组的方法来做到输出图案。
合适的阅读的对象
刚刚学到数组的小伙伴
学习java等等编程很深的人,想了解更多的做题方法或者另类思路的大佬
源码如下
package tianjinzheng;
import java.util.*;
public class lan1 {public static void main(String[] args) {Scanner sc =new Scanner(System.in); System.out.println("请输入你需要的层数:");int n=sc.nextInt(); //当取18时,为原题情况if (n % 2 == 0) {n++;}int[][]a;a = new int[n][n];//简化情况,只留下奇数时的六芒星的结果int upleft = a.length;int upright = a.length;for (int i = 0; i < a.length / 2; i++) {for (int j = 0; j < a.length; j++) {if (j == upleft / 2 | j == upright / 2) {a[i][j] ++;}}upleft = upleft + 2;upright = upright - 2;}for (int k = 0; k < a.length; k++) {a[a.length / 2][k]++;}//打印出上层的镂空三角形int shift = (a.length / 2 - 1) / 2 - 1;int underleft = 0;int underright = 2 * a.length - 1;for (int i = 0; i < a.length / 2 + 1; i++) {for (int j = 0 ; j < a.length; j++) {if (j == underleft / 2 | j == underright / 2) {a[i + shift][j] ++;}}underleft = underleft + 2;underright = underright -2; }for (int k = 0; k < a.length; k++) {a[0 + shift][k]++;}//打印出下层的镂空三角形for (int i = 0; i < a.length; i++) {for (int j = 0; j < a.length; j++) {if (a[i][j] >= 1) {System.out.print("*");}else {System.out.print(" ");}}System.out.println();}//类似二维数组遍历,遍历打印出所有数组基于数值得到的两种情况之一}
}
举例如下
衍生品,打印出箭头
源码如下
package tianjinzheng;
import java.util.*;
public class jiantou {public static void main(String[] args) {Scanner sc =new Scanner(System.in); System.out.println("请输入你需要的层数:");int input=sc.nextInt(); if (input % 2 == 0) {input++;}int[][]a;a = new int[input][input];for (int p = 0; p < a.length; p++) {for (int o = 0; o < a.length; o++) {a[p][o] = 0;}} int asd = a.length;int asdd = a.length;for (int i = 0; i < a.length / 2; i++) {for (int j = 0; j < a.length; j++) {if (j == asd / 2 | j == asdd / 2) {a[i][j] ++;}}asd = asd + 2;asdd = asdd - 2;}for (int k = 0; k < a.length; k++) {a[k][a.length / 2]++;}for (int n = 0; n < a.length; n++) {for (int v = 0; v < a.length; v++) {if (a[n][v] >= 1) {System.out.print("*");}else {System.out.print(" ");}}System.out.println();}}
}
举例如下
以上,通过很简单的方法,刚入门的小白都能写出来
害!!大一新生,刚学java,代码写的很烂,各位大佬们轻喷。另外我是日语生,所以看上面的英语变量会感觉很赶脚。。。
第一次写博客,有什么意见或者里面的规定务必提出来,谢谢学长学姐大佬们了
关于 蓝桥杯 打印六芒星 的 另类方法相关推荐
- java中的冰雹数,java实现第七届蓝桥杯打印数字
打印数字 打印数字 小明写了一个有趣的程序,给定一串数字. 它可以输出这串数字拼出放大的自己的样子. 比如"2016"会输出为: 00000 1 6666 2 0 0 1 1 6 ...
- 蓝桥杯-打印十字图-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 蓝桥杯-打印菱形/字符串截断
字符串截断 package august20;public class 字符串截断 {public static void main(String[] args) {String a="he ...
- 蓝桥杯-- 打印 LOGO
打印 LOGO 现在小学生也在学习基本的编程,课程目标是让小学生能够有基本的算法思想,并不涉及复杂的数据和实现细节与原理. LOGO 语言就非常适合小学生学习,它通过绘图的方式来直观的表现 ...
- java实现第七届蓝桥杯打印数字
打印数字 打印数字小明写了一个有趣的程序,给定一串数字. 它可以输出这串数字拼出放大的自己的样子.比如"2016"会输出为:00000 1 66662 0 0 1 1 6 0 0 ...
- 蓝桥杯—打印十字图—Java
1.问题描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg) 对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数. 为了能准确比对空 ...
- 蓝桥杯-振兴中华三种解题方法(C语言)
题目: 小明参加了学校的趣味运动会,其中的一个项目是:跳格子.地上画着一些格子,每个格子里写一个字,如下所示: 从我做起振 我做起振兴 做起振兴中 起振兴中华 比赛时,先站在左上角的写着"从 ...
- c语言奇怪的分式11,蓝桥杯-奇怪的分式-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 蓝桥杯知识点汇总:基础知识和常用算法
文章目录 JAVA基础语法: 算法竞赛常用的JAVA API: 算法和数据结构 简单算法 简单数据结构 图论 数学 贪心 动态规划 补充 省赛题解 待更: 此系列包含蓝桥杯(软件类)所考察的绝大部分知 ...
最新文章
- 编译nginx时的两个报错
- visio 模具_小研爱科研 || 那些Visio里的小技巧你Get了吗?
- java自定义注解为空值_java自定义注解
- 优雅地断开TCP连接
- 如何使用Instruments诊断App(Swift版):起步
- JDBC查询Oracle全部表名称,如何使用JDBC API从Oracle数据库中的现有表中检索记录?...
- 每日一题——剑指 Offer24反转链表
- RabbitMQ(1) - win+rabbitMQ
- 机器学习第20篇 - 基于Boruta选择的特征变量构建随机森林
- php phpredis,PHP_PHP中redis的用法深入解析,redis是一个key-value存储系统。 - phpStudy...
- JAVA的节点流和处理流
- 查询系统--基于Solr4.9.0实现
- Java学习之路 之 提问及解决篇
- 比特币交易的脚本如何执行
- Hough变换的理解
- Arcgis培训内容
- 服务器销售周总结怎么写,网管周工作总结范文的内容
- 传奇服务器脚本文件在哪个文件夹,传奇私服的GM命令在哪个文件夹里?
- docker CLI官方教程 run方法解析(docer run 、docker attach 与 docker exec的区别)
- 参数的点估计问题与矩估计法