欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

01.求解菱形问题

程序员文章站 2022-05-06 10:05:20
...

题目描述

输入一个奇数n,输出一个由‘*’构成的n阶实心菱形。

输入格式

一个奇数n。

输出格式

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

具体格式参照输出样例。

数据范围

1≤n≤991≤n≤99

输入样例:

5

输出样例:

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

解题思路

  • 打印n阶菱形,其实本质在于找到其在矩阵中的规律
  • 本题中我将介绍怎样用曼哈顿距离去解决该类问题。

曼哈顿距离概念

01.求解菱形问题

进行找规律

01.求解菱形问题

  • 计算各点坐标与中心点的曼哈顿距离,得到规律。
  • 曼哈顿距离小于n/2的,输出*,否则输出空格

代码实例

#include <iostream>
#include <cmath> 

using namespace std;

int main()
{
  	int n;
  	cin >> n;
  	
  	int cx = n/2,cy = n/2; //中心点坐标
	for (int i = 0;i< n;i++)
	{
		for (int j = 0;j < n;j++)
			if (abs(i-cx)+abs(j-cy) <= n/2) //曼哈顿距离小于n/2 
				cout << "*";
			else cout << ' ';
		cout << endl;
	 }
	  
	return 0;
}