当前位置: 首页 > news >正文

通州网站建设全包济南品牌网站制作便宜

通州网站建设全包,济南品牌网站制作便宜,wordpress轻应用主机,wordpress 滑块题目描述] 分析: 利用程序根据输入的整数,画出由字符*构成的该整数阶的实心菱形。给出一个示例: n 7 n7 n7。 * * * * * * * * * * * * * * * * * * * * * * * * * 我们将采取拆解问题,通过四个部分的…

题目描述]


分析:

利用程序根据输入的整数,画出由字符*构成的该整数阶的实心菱形。给出一个示例: n = 7 n=7 n=7

      *       * * *     * * * * *   
* * * * * * * * * * * *   * * *     *       

我们将采取拆解问题,通过四个部分的组合最终拼出这个菱形。通过观察,可以看出不管给出的整数是多少,最终形成的图形一定是一由空格 和星星*构成个正方形(记为s)。如图1所示。
在这里插入图片描述

图1 正方形
#### 拼出第一部分-对角线 另外我们可以知道正方形有两条相交的对角线,它将正方形分成了四个相等的部分。如图2所示。

在这里插入图片描述

图2 对角线示意

基于此我们可以先将这两条对角线画出来,是不是就成功了一半了呢?这两条对角线也很容易画,一条线是 x = 3 ( n / 2 ) x=3(n/2) x=3(n/2),另一条是 y = n / 2 y=n/2 y=n/2。给出画对角线的代码:

	for (int i = 0; i < n; i ++) { // 画出十字架对角线for (int j = 0; j < n; j ++) {if (i == n / 2 || j == n / 2) res[i][j] = '*';}}

通过这一步画出的图形为:

      *       *       *       
* * * * * * * *       *       *       
拼出第二部分-左上角

有了这两条相交的对角线,我们只需要处理左上角需要描的点即可,然后利用相交的对角线通过关于 x x x轴对称与 y y y轴对称的方法映射到其他的三个区域!如图3所示。

在这里插入图片描述

图3 x、y映射

那么该怎么计算左上角的该描的点呢?我们可以观察这三个点的坐标 ( 1 , 2 ) , ( 2 , 1 ) , ( 2 , 2 ) {(1,2), (2,1), (2, 2)} (1,2),(2,1),(2,2),也可以表示为 ( 1 , n / 2 − 1 ) , ( 2 , 1 ) , ( 2 , n / 2 − 1 ) {(1,n/2-1), (2,1), (2, n/2-1)} (1,n/21),(2,1),(2,n/21)。因此可以用双层循环进行遍历,伪代码如下:

	// 左上角描点for (int i = 1; i <= n / 2 - 1; i ++) { // 1到n/2-1行for (int j = n / 2 - 1; j>= n / 2 - i; j --) { // 倒着来,从n/2-1到n/2-i列res[i][j] = '*';}}

经过这一步,我们所画出来的图形为:

      *       * *       * * *       
* * * * * * * *       *       *       
拼出第二部分-右上角

当我们画出左上角后,可以将 n / 2 n/2 n/2视作 y y y轴,进行关于y轴的对称实现映射效果。具体流程为:先遍历一遍左上角,遇到为*的就进行映射,只需要更改列的坐标即可,给出代码:

        for (int i = 1; i <= n / 2 - 1; i ++) { // 对称到右上角for (int j = 1; j <= n / 2 - 1; j ++) {if (res[i][j] == '*') {res[i][n / 2 + (n / 2 - j)] = res[i][j];}}}

此时生成的图形为:

      *       * * *     * * * * *   
* * * * * * * *       *       *       
接下来该怎么拼?

后面有多种拼法,可以先做左上角/右上角关于 x x x轴的对称,映射到左下角/右下角。这里我将上半部分当作一个整体,进行 x x x轴对称,一步到位!代码为:

	for (int i = 1; i <= n - 1; i ++) { // 对称到整个下方for (int j = 1; j <= n - 1; j ++) {if (res[i][j] == '*') {res[n / 2 + (n / 2 - i)][j] = res[i][j];}}}

图像为:

      *       * * *     * * * * *   
* * * * * * * * * * * *   * * *     *      

至此,菱形就被我们画出来。这道题有需要不同的画法,上面只是笔者自己的理解,关于其他更优雅更简洁的方法请大家开动脑筋去尽情尝试吧!!

代码(Java)

import java.util.*;public class Main {public static void main(String args[]) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int x = n / 2;char[][] res = new char[n][n];for (int i = 0; i < n; i ++) { // 画出十字架for (int j = 0; j < n; j ++) {if (i == n / 2 || j == n / 2) res[i][j] = '*';}}for (int i = 1; i <= n / 2 - 1; i ++) { // 左上角for (int j = n / 2 - 1; j>= n / 2 - i; j --) {res[i][j] = '*';}}for (int i = 1; i <= n / 2 - 1; i ++) { // 对称到右上角for (int j = 1; j <= n / 2 - 1; j ++) {if (res[i][j] == '*') {res[i][n / 2 + (n / 2 - j)] = res[i][j];}}}for (int i = 1; i <= n - 1; i ++) { // 对称到整个下方for (int j = 1; j <= n - 1; j ++) {if (res[i][j] == '*') {res[n / 2 + (n / 2 - i)][j] = res[i][j];}}}for (int i = 0; i < n; i ++) {for (int j = 0; j < n; j ++) {if (res[i][j] == '*') System.out.print('*');else System.out.print(' ');}System.out.println();}}
}
http://www.yayakq.cn/news/243767/

相关文章:

  • 潍坊高级网站建设推广做网站和做app哪个容易
  • 网站策划书需求分析电子商务网站建设结业论文
  • 网站建设费记在什么科目下公司网站被抄袭
  • 网站建设贰金手指下拉贰壹黄页app
  • 网站开发实训周志做电商那个平台最好
  • ai生成图片在线制作单页面网站如何seo
  • 在线学做网站检测ai写作的网站
  • 学校网站怎么做优化网站开发研发工程师岗位职责
  • 做网站人郑州h5网站建设价格
  • 上海网站建设企业排名百度站长验证网站
  • 凉山网站建设小程序建站模板
  • 沈阳做网站哪好升级wordpress 另一更新正在进行
  • 备案成功后多久可以打开网站微信小程序定义
  • 惠州网站建设科技有限公司建设黄页大全网站入口
  • 如何将百度云做成网站文件服务器百度推广负责做网站吗
  • 网站开发工作室策划案浙江建筑信息网港
  • 上海微信网站建设兼容网站东港建站公司
  • 纯静态网站怎么做cdn圣融网站建设
  • 南京网站网站建设学校做团购网站需要什么资质
  • 黄冈网站医院网站建设招标说明
  • 网站开发技术是什么wordpress 社交账号 文章评论
  • 营销印刷网站濮阳市做网站
  • 银行门户网站系统建设方案公司网站服务器租用
  • 南宁网站建站推广关闭评论 WordPress
  • 海口网站制作价格网站建设的网络公
  • 英德市建设及城乡管理局网站网络托管公司有哪些
  • 养老院网站开发背景南山区住房和建设局网站官网
  • 安阳网站建设哪家公司好少儿编程加盟亏本
  • 外贸网站建设公司价位公司logo设计大全 图片欣赏
  • 先做网站还是先注册公司运城建网站