当前位置:网站首页>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();
}
}
}
边栏推荐
- Baidu online AI competition - image processing challenge: the 8th program of handwriting erasure
- GTSAM中李群的运用
- Request forwarding and redirection
- Report on market depth analysis and future trend prediction of China's arsenic trioxide industry from 2022 to 2028
- Raised a kitten
- Reading notes of effective managers
- Function of contenttype
- 进程和线程的理解
- 如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法
- Network protocol model
猜你喜欢
Arrays and collections
About PHP startup, mongodb cannot find the specified module
Usage of test macro of GTEST
Analysis report on development trends and investment planning of China's methanol industry from 2022 to 2028
功能安全之故障(fault),错误(error),失效(failure)
Buuctf-[[gwctf 2019] I have a database (xiaoyute detailed explanation)
【Postman】Monitors 监测API可定时周期运行
【Postman】Collections-运行配置之导入数据文件
华为路由器如何配置静态路由
Mysql database master-slave cluster construction
随机推荐
[Thesis code] SML part code reading
华为BFD的配置规范
[ram IP] introduction and experiment of ram IP core
Network protocol model
Expose the serial fraudster Liu Qing in the currency circle, and default hundreds of millions of Cheng Laolai
Auto. JS learning notes 17: basic listening events and UI simple click event operations
wib3.0 跨越,在跨越(ง •̀_•́)ง
Analysis report on development trends and investment planning of China's methanol industry from 2022 to 2028
IPv6 comprehensive experiment
Cognitive introspection
nodejs实现微博第三方登录
授予渔,从0开始搭建一个自己想要的网页
Raised a kitten
My 2021
Embedded point test of app
VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
Function of contenttype
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
C language bubble sort
MPLS test report