当前位置:网站首页>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();
}
}
}
边栏推荐
- Summary of data sets in intrusion detection field
- Web service connector: Servlet
- Accélération de la lecture vidéo de l'entreprise
- Construction of yolox based on paste framework
- Is it difficult for an information system project manager?
- IDEA 新UI使用
- H3C S5820V2_ Upgrade method after stacking IRF2 of 5830v2 switch
- Usage of test macro of GTEST
- HCIA复习
- 【Postman】Collections-运行配置之导入数据文件
猜你喜欢
SQLMAP使用教程(三)实战技巧二
【C语言】字符串左旋
CoordinatorLayout+NestedScrollView+RecyclerView 上拉底部显示不全
H3C防火墙RBM+VRRP 组网配置
Web service connector: Servlet
[web security] nodejs prototype chain pollution analysis
VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
Idea new UI usage
How Huawei routers configure static routes
Expose the serial fraudster Liu Qing in the currency circle, and default hundreds of millions of Cheng Laolai
随机推荐
Practice sharing: how to safely and quickly migrate from CentOS to openeuler
【论文代码】SML部分代码阅读
数字三角形模型 AcWing 1015. 摘花生
My 2021
Investment strategy discussion and market scale prediction report of China's solid state high power amplifier industry from 2022 to 2028
[course notes] Compilation Principle
Hongliao Technology: Liu qiangdong's "heavy hand"
Expose the serial fraudster Liu Qing in the currency circle, and default hundreds of millions of Cheng Laolai
Baidu online AI competition - image processing challenge: the 8th program of handwriting erasure
查询生产订单中某个(些)工作中心对应的标准文本码
Amazon Engineer: eight important experiences I learned in my career
Linux regularly backs up MySQL database
Dynamic programming -- knapsack problem
如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法
養了只小猫咪
continue和break的区别与用法
Luogu p1460 [usaco2.1] healthy Holstein cows
【无标题】
[happy Spring Festival] if you feel happy, dance
Overview of three core areas of Mathematics: algebra