前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >727. 菱形 (曼哈顿距离)

727. 菱形 (曼哈顿距离)

作者头像
浪漫主义狗
发布2023-09-04 13:50:20
1640
发布2023-09-04 13:50:20
举报
文章被收录于专栏:HAUE_LYS'Blog

本文最后更新于 445 天前,其中的信息可能已经有所发展或是发生改变。

727. 菱形 (曼哈顿距离)

原题链接 描述 输入一个奇数 n,输出一个由 * 构成的 n 阶实心菱形。

输入格式 一个奇数 n。

输出格式 输出一个由 * 构成的 n 阶实心菱形。

具体格式参照输出样例。

数据范围 1≤n≤99 输入样例:

代码语言:javascript
复制
5

输出样例:

代码语言:javascript
复制
  *  
 *** 
*****
 *** 
  *  

分析:

  • 循环n次,每一行按照规律打印" ""*"

规律寻找 1.观察法

  • (n+1)/2处为分界线分别向上下延申打印输出

2.利用曼哈顿距离

  • 以中心点向边界打印,打印输出曼哈顿距离l <= (n-1)/2的点 曼哈顿距离:矩阵任意一点只通过横向或纵向移动到达中心点的距离 计算公式:x(x1,y1)到中心点m(x2,y2)
代码语言:javascript
复制
l = abs(x1-x2) + abs(y1-y2)

代码 1.观察法解:

代码语言:javascript
复制
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=1,k=1;i<=n;i++){

        for(int j=1;j<=(n+1)/2-k;j++){
            cout<<" ";
        }
        for(int j=0;j<k*2-1;j++){
            cout<<"*";
        }
        cout<<endl;
        if(i>=(n+1)/2){
            k--;
        }
        else k++;
    }

    return 0;
}

2.曼哈顿解:

代码语言:javascript
复制
//曼哈顿解 
#include <bits/stdc++.h> 
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(abs((n+1)/2-i)+abs((n+1)/2-j)<=(n-1)/2){  //计算曼哈顿距离
                cout<<"*";
            }
            else cout<<" ";
        }
        cout<<endl;
    }
    return 0;
}

扩展:只打印边框,不打印内部的空心菱形 例题:ZZULIOJ 1077: 空心菱形 原题链接 分析:

  • 打印曼哈顿距离==(n-1)/2"*"

代码:

代码语言:javascript
复制
#include <bits/stdc++.h> 
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(abs((n+1)/2-i)+abs((n+1)/2-j)==(n-1)/2){  //计算曼哈顿距离
                cout<<"*";
            }
            else cout<<" ";
        }
        cout<<endl;
    }
    return 0;
}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-6-14 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 727. 菱形 (曼哈顿距离)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档