当前位置:网站首页>Manhattan distance sum - print diamond
Manhattan distance sum - print diamond
2022-07-06 06:08:00 【starnight531】

Manhattan distance and
Food Guide :
Leetcode The column opens , Because the blogger is closed at the end of the period , So only one question per day Try to solve more than one problem , First say the train of thought. , Then the code realizes , Necessary comments will be added Grammar or STL The content will be highlighted at the attention point , Novice friendly Welcome to the blogger's magic tricks column , Detailed explanation of connotation algorithm foundation and code template
Title Description :
Enter an odd number n, Output a by * Composed of n Step solid diamond .
Input format
An odd number n.Output format
Output a by * Composed of n Step solid diamond .Refer to the output sample for specific format .
Data range
1≤n≤99
sample input :
5
sample output :
Title source :https://www.acwing.com/problem/content/729/
Topic analysis :
Law 1 : Manhattan distance and :
Manhattan distance :x / y The maximum value of the direction projection distance
Manhattan distance and :x Direction projection distance + y Direction projection distance
The diamond :
The nature of the circle itself is that the distance from each point to the center of the circle is equal , This distance is under the root sign ((Δx)2+(Δy)2)
In the array , Because of the accuracy , Reduce the distance to Manhattan distance and
The same Manhattan distance and the collection of points form a diamond , The diamond is already very close
But because of its different mathematical expressions , The resulting figure is also a diamond
Algorithm template :
Code implementation :
Law 1 :
- Enter only odd numbers :
import java.util.Scanner;
import java.lang.Math;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if (Math.abs(i - n/2)+Math.abs(j - n/2) <= n/2){
System.out.print("*");
}else System.out.print(" ");
}
System.out.println();
}
}
}
- Odd even mixed input :
import java.util.Scanner;
import java.lang.Math;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = n;
if (n % 2 == 0) m++;
for(int i=0; i<m; i++){
for(int j=0; j<m; j++){
if (Math.abs(i - m/2)+Math.abs(j - m/2) <= m/2){
System.out.print("*");
}else System.out.print(" ");
}
System.out.println();
}
}
}
Be careful :
For odd row diamonds :
Input n It is the number of rows and columns in a diamond , It's diamond in the middle again * Number
The number of lines of the square on the outside of the diamond / The number of columns is odd , Midpoint is (n/2 , n/2),mahattan = max(abs(i - n/2), abs(j - n/2))
For even rows of diamonds :
Input n For the even , The number of diamond rows and columns is n+1, Middle row * The number is also n+1
The number of lines of the square on the outside of the diamond / The number of columns is odd , Midpoint is ((n+1/2), (n+1)/2),mahattan = max(abs(i - (n+1)/2), abs(j - (n+1)/2))
Can we force the use of even Manhattan distance formula to solve ?
The answer is that this question cannot , After all, drawing a diamond can only have odd rows and odd sequences (2*n + 1),
The midpoint compulsorily solved by the even Manhattan distance formula is not the midpoint , Distance is even more wrong .demonstration : Enter the following code 4 The diamond drawn is
import java.util.Scanner;
import java.lang.Math;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = n;
if (n % 2 == 0) m++;
for(int i=0; i<m; i++){
for(int j=0; j<m; j++){
// Even numbers are wrong to use Manhattan distance formula , The midpoint position and distance are wrong
if(n % 2 == 1){
if (Math.abs(i - n/2)+Math.abs(j - n/2) <= n/2){
System.out.print("*");
}else System.out.print(" ");
}else{
if ((int)Math.abs(i - (n-1)/2.0)+(int)Math.abs(j - (n-1)/2.0) <= n/2){
System.out.print("*");
}else System.out.print(" ");
}
}
System.out.println();
}
}
}

边栏推荐
- Luogu p1460 [usaco2.1] healthy Holstein cows
- c语言——冒泡排序
- Buuctf-[bjdctf2020]zjctf, but so (xiaoyute detailed explanation)
- 网络协议模型
- Huawei BFD configuration specification
- PAT(乙级)2022年夏季考试
- Summary of data sets in intrusion detection field
- 【论文代码】SML部分代码阅读
- 误差的基本知识
- Database: ODBC remote access SQL Server2008 in oracel
猜你喜欢
随机推荐
Introduction to promql of # yyds dry goods inventory # Prometheus
[ram IP] introduction and experiment of ram IP core
CoDeSys note 2: set coil and reset coil
Auto. JS learning notes 17: basic listening events and UI simple click event operations
Interface test: what are the components of the URL in fiddler
多线程应用的测试与调试
关于 PHP 启动 MongoDb 找不到指定模块问题
Nodejs realizes the third-party login of Weibo
Accélération de la lecture vidéo de l'entreprise
Embedded point test of app
Configuring OSPF GR features for Huawei devices
进程和线程的理解
数学三大核心领域概述:代数
查詢生產訂單中某個(些)工作中心對應的標准文本碼
GTSAM中李群的運用
HCIA复习
ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
Li Chuang EDA learning notes 12: common PCB board layout constraint principles
What are the test sites for tunnel engineering?
【课程笔记】编译原理









![[untitled]](/img/5d/028b9d19e9a2b217f40198d4631db2.png)