不同层次的菱形图案程序
给定一个数字 n 并使用 0-n 个数字,您必须打印这样的模式。
例子:
Input : n = 5
Output :
0
0 1 0
0 1 2 1 0
0 1 2 3 2 1 0
0 1 2 3 4 3 2 1 0
0 1 2 3 4 5 4 3 2 1 0
0 1 2 3 4 3 2 1 0
0 1 2 3 2 1 0
0 1 2 1 0
0 1 0
0
Input : n = 3
Output :
0
0 1 0
0 1 2 1 0
0 1 2 3 2 1 0
0 1 2 1 0
0 1 0
0
这里的想法是计算字符串开头的空间。在这种模式中,有 ((2 * n) + 1) 行。在行中,从 0 到 n 的空格数为 (2 * (n – i))。在从 (n + 1) 到 (2 * n) 的行号中,空格数为 ((i – n) * 2)。
以下是上述方法的实现:
C++
// C++ code to print the pattern
#include
using namespace std;
// function to generate the pattern.
void pattern(int n)
{
// putting the space in line 1
for (int i = 1; i <= n * 2; i++)
cout << " ";
cout << 0 << endl;
// generating the middle pattern.
for (int i = 1; i <= (n * 2) - 1; i++) {
// printing the increasing pattern
if (i < n) {
for (int j = 1; j <= (n - i) * 2; j++)
cout << " ";
}
else {
for (int j = 1; j <= (i % n) * 2; j++)
cout << " ";
}
if (i < n) {
for (int j = 0; j <= i % n; j++)
cout << j << " ";
for (int j = (i % n) - 1; j > 0; j--)
cout << j << " ";
cout << 0;
}
// printing the decreasing pattern
else if (i > n) {
for (int j = 0; j <= n - (i - n); j++)
cout << j << " ";
for (int j = (n - (i - n)) - 1; j > 0; j--)
cout << j << " ";
cout << 0;
}
else {
for (int j = 0; j <= n; j++)
cout << j << " ";
for (int j = n - 1; j > 0; j--)
cout << j << " ";
cout << 0;
}
cout << endl;
}
// putting the space in last line
for (int i = 1; i <= n * 2; i++)
cout << " ";
cout << 0;
}
// driver function.
int main()
{
int n = 4;
pattern(n);
return 0;
}
Java
// Java code to print the pattern
import java.util.*;
import java.lang.*;
public class GeeksforGeeks{
// function to generate the pattern.
public static void pattern(int n){
// putting the space in line 1
for (int i = 1; i <= n * 2; i++)
System.out.print(" ");
System.out.print(0 + "\n");
// generating the middle pattern.
for (int i = 1; i <= (n * 2) - 1; i++) {
// printing the increasing pattern
if (i < n) {
for (int j = 1; j <= (n - i) * 2; j++)
System.out.print(" ");
}
else {
for (int j = 1; j <= (i % n) * 2; j++)
System.out.print(" ");
}
if (i < n) {
for (int j = 0; j <= i % n; j++)
System.out.print(j + " ");
for (int j = (i % n) - 1; j > 0; j--)
System.out.print(j + " ");
System.out.print(0);
}
// printing the decreasing pattern
else if (i > n) {
for (int j = 0; j <= n - (i - n); j++)
System.out.print(j + " ");
for (int j = (n - (i - n)) - 1; j > 0; j--)
System.out.print(j + " ");
System.out.print(0);
}
else {
for (int j = 0; j <= n; j++)
System.out.print(j + " ");
for (int j = n - 1; j > 0; j--)
System.out.print(j + " ");
System.out.print(0);
}
System.out.print("\n");
}
// putting the space in last line
for (int i = 1; i <= n * 2; i++)
System.out.print(" ");
System.out.print(0);
}
// driver code
public static void main(String argc[]){
int n = 4;
pattern(n);
}
}
/*This code is contributed by Sagar Shukla.*/
Python3
# Python3 code to print the pattern
# function to generate the pattern.
def pattern(n):
# putting the space in line 1
for i in range(1, n * 2 + 1):
print(end = " ")
print("0")
# generating the middle pattern.
for i in range(1, n * 2):
# printing the increasing pattern
if (i < n):
for j in range(1, (n - i) * 2 + 1):
print(end = " ")
else:
for j in range(1, (i % n) * 2 + 1):
print(end = " ")
if (i < n):
for j in range(i % n + 1):
print(j, end = " ")
for j in range(i % n - 1, -1, -1):
print(j, end = " ")
# printing the decreasing pattern
elif (i > n):
for j in range(n - (i - n) + 1):
print(j, end = " ")
for j in range((n - (i - n)) - 1, -1, -1):
print(j, end = " ")
else:
for j in range(n + 1):
print(j, end = " ")
for j in range(n - 1, -1, -1):
print(j, end = " ")
print()
# putting the space in last line
for i in range(1, n * 2 + 1):
print(end = " ")
print("0", end = "")
# Driver Code
n = 4;
pattern(n);
# This code is contributed by
# mohit kumar 29
C#
// C# code to print the pattern
using System;
public class GeeksforGeeks{
// function to generate the pattern.
public static void pattern(int n){
// putting the space in line 1
for (int i = 1; i <= n * 2; i++)
Console.Write(" ");
Console.Write(0 + "\n");
// generating the middle pattern.
for (int i = 1; i <= (n * 2) - 1; i++) {
// printing the increasing pattern
if (i < n) {
for (int j = 1; j <= (n - i) * 2; j++)
Console.Write(" ");
}
else {
for (int j = 1; j <= (i % n) * 2; j++)
Console.Write(" ");
}
if (i < n) {
for (int j = 0; j <= i % n; j++)
Console.Write(j + " ");
for (int j = (i % n) - 1; j > 0; j--)
Console.Write(j + " ");
Console.Write(0);
}
// printing the decreasing pattern
else if (i > n) {
for (int j = 0; j <= n - (i - n); j++)
Console.Write(j + " ");
for (int j = (n - (i - n)) - 1; j > 0; j--)
Console.Write(j + " ");
Console.Write(0);
}
else {
for (int j = 0; j <= n; j++)
Console.Write(j + " ");
for (int j = n - 1; j > 0; j--)
Console.Write(j + " ");
Console.Write(0);
}
Console.Write("\n");
}
// putting the space in last line
for (int i = 1; i <= n * 2; i++)
Console.Write(" ");
Console.Write(0);
}
// driver code
public static void Main(string []argc){
int n = 4;
pattern(n);
}
}
// This code is contributed by rutvik_56.
PHP
0;
$j--)
echo $j , " ";
echo 0;
}
// printing the
// decreasing pattern
else if ($i > $n)
{
for ($j = 0; $j <= $n - ($i - $n);
$j++)
echo $j , " ";
for ($j = ($n - ($i - $n)) - 1;
$j > 0; $j--)
echo $j , " ";
echo 0;
}
else {
for ($j = 0; $j <= $n; $j++)
echo $j ," ";
for ($j = $n - 1; $j > 0; $j--)
echo $j , " ";
echo 0;
}
echo "\n";
}
// putting the space
// in last line
for ($i = 1; $i <= $n * 2; $i++)
echo " ";
echo 0;
}
// Driver Code
$n = 4;
pattern($n);
// This code is contributed by ajit
?>
Javascript
输出:
0
0 1 0
0 1 2 1 0
0 1 2 3 2 1 0
0 1 2 3 4 3 2 1 0
0 1 2 3 2 1 0
0 1 2 1 0
0 1 0
0