【c/c++算法】曼哈顿算法简单运用
创始人
2024-03-14 12:48:09
0

✨曼哈顿算法

  • 🦖1.曼哈顿距离算法:
  • 🐢2.例题:打印菱形曼哈顿算法讲解:
  • 🦕3.曼哈顿算法例题解释:

🦖1.曼哈顿距离算法:

  • 我们很早以前就学过了两点间距离公式,欧式距离公式

在这里插入图片描述

  • 今天我们来学习另外一种距离公式,曼哈顿距离中点的距离公式:

这里是引用

  • 接下来我们例题的形式讲解!

🐢2.例题:打印菱形曼哈顿算法讲解:

打印菱形图案

本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。


标题输入格式

输入在一行中给出一个正的奇数n。

输出格式

输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。

输入样例

1|7

输出样例

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

🦕3.曼哈顿算法例题解释:

这里是引用

  • 图画的有些拙劣,大家见谅哈!🦖
  • 以n=5为例:
  • 4 的由来,是该位置的横纵坐标分别与中心的横纵坐标的差的绝对值,也就是曼哈顿距离中点的距离;
  • 规律发现,我们发现我们需要打印“星号”的地方曼哈顿距中都是小于等于2的,其余地方都是“空格”;
  • 类推求解,看中间一行,除去中心,两边都要打印“星号”,并且是曼哈顿距中最大值,也就是(n-1)/ 2,当然在代码中int类型n/2直接就可以有前者效果;
  • 曼哈顿法代码:c++
#include using namespace std;int main()
{int n;cin >> n;int xc = n/2, yc = n/2;for(int i=0; ifor(int j=0; jif((abs(i-xc)+abs(j-yc))<=n/2)cout << '*'; // 曼哈顿距离else cout << ' ';}cout << endl;}return 0;
}
  • 曼哈顿法代码:c
#include 
#includeint main()
{int n;scanf("%d", &n);int xc = n / 2, yc = n / 2;for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){if ((abs(i - xc) + abs(j - yc)) <= n / 2)printf("*"); // 曼哈顿距离elseprintf(" ");}printf("\n");}return 0;
}

其中abs()函数是取绝对值的意思哈,包含在头文件

结语:

霞满日月,前路明朗,一起加油!!!

在这里插入图片描述

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...