【c/c++算法】曼哈顿算法简单运用

简介: 【c/c++算法】曼哈顿算法简单运用

🦖1.曼哈顿距离算法:

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

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

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

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

打印菱形图案

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


标题输入格式

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

输出格式

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

输入样例

1|7

输出样例

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

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

  • 图画的有些拙劣,大家见谅哈!🦖
  • 以n=5为例:
  • 4 的由来,是该位置的横纵坐标分别与中心的横纵坐标的差的绝对值的和,也就是曼哈顿距离中点的距离;
  • 规律发现,我们发现我们需要打印“星号”的地方曼哈顿距中都是小于等于2的,其余地方都是“空格”;
  • 类推求解,看中间一行,除去中心,两边都要打印“星号”,并且是曼哈顿距中最大值,也就是(n-1)/ 2,当然在代码中int类型n/2直接就可以有前者效果;
  • 曼哈顿法代码:c++
#include <iostream>

using namespace std;

int main()
{
    int n;
    cin >> 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)
                cout << '*'; // 曼哈顿距离
            else 
                cout << ' ';
        }
        cout << endl;
    }
    return 0;
}
  • 曼哈顿法代码:c
#include <stdio.h>
#include<math.h>

int 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("*"); // 曼哈顿距离
           else
               printf(" ");
       }
       printf("\n");
   }
   return 0;
}

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

结语:

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

相关文章
|
8天前
|
算法 C++
算法笔记:递归(c++实现)
算法笔记:递归(c++实现)
|
5天前
|
算法 前端开发 Linux
【常用技巧】C++ STL容器操作:6种常用场景算法
STL在Linux C++中使用的非常普遍,掌握并合适的使用各种容器至关重要!
32 10
|
22天前
|
缓存 负载均衡 算法
C++如何实现一致性算法
一致性哈希是一种用于分布式系统的负载均衡算法,旨在减少服务器增减导致的数据迁移。当有N台服务器时,通过哈希环将请求均匀分布到每台服务器,每台处理N/1的请求。若使用缓存如Redis,可进一步处理高并发场景。算法将哈希值空间视为环形,服务器和请求哈希后定位到环上,按顺时针方向找到第一台服务器作为负载目标。提供的C++代码实现了MD5哈希函数,以及一致性哈希算法的物理节点、虚拟节点和算法本身,以实现节点的添加、删除和请求映射。
19 1
C++如何实现一致性算法
|
7天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
7天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
7天前
|
存储 算法 C++
【数据结构与算法】:带你手搓顺序表(C/C++篇)
【数据结构与算法】:带你手搓顺序表(C/C++篇)
|
15天前
|
存储 算法 Cloud Native
C++ bcrypt算法 字符串加密,亲测有效
C++ bcrypt算法 字符串加密,亲测有效
|
28天前
|
算法 C++
c++算法学习笔记 (21) STL
c++算法学习笔记 (21) STL
|
28天前
|
算法 C++
c++算法学习笔记 (20) 哈希表
c++算法学习笔记 (20) 哈希表
|
28天前
|
算法 C++
c++算法学习笔记 (19) 堆
c++算法学习笔记 (19) 堆