当前位置:网站首页>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();
}
}
}

边栏推荐
- properties文件
- 授予渔,从0开始搭建一个自己想要的网页
- 【Postman】Collections配置运行过程
- My 2021
- Caused by:org.gradle.api.internal.plugins . PluginApplicationException: Failed to apply plugin
- 2022 software testing workflow to know
- Detailed explanation of BF and KMP
- Accélération de la lecture vidéo de l'entreprise
- Testing and debugging of multithreaded applications
- Dynamic programming -- knapsack problem
猜你喜欢

Li Chuang EDA learning notes 12: common PCB board layout constraint principles

Yunxiaoduo software internal test distribution test platform description document

Hypothesis testing learning notes

【C语言】字符串左旋

Practice sharing: how to safely and quickly migrate from CentOS to openeuler

华为BFD的配置规范

How Huawei routers configure static routes

J'ai un chaton.

The difference and usage between continue and break

HCIA review
随机推荐
HCIA复习
Gtest之TEST宏的用法
局域网同一个网段通信过程
Construction of yolox based on paste framework
Significance of unit testing
网络协议模型
【Postman】动态变量(也称Mock函数)
【C语言】字符串左旋
查詢生產訂單中某個(些)工作中心對應的標准文本碼
授予渔,从0开始搭建一个自己想要的网页
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
Configuring OSPF GR features for Huawei devices
【eolink】PC客户端安装
请求转发与重定向
Redis6 cluster setup
Dynamic programming -- knapsack problem
【C语言】qsort函数
Web service connector: Servlet
Usage of test macro of GTEST
如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法