螺旋图案

给定一个数字N,任务是打印以下图案:-

null

例如:

Input : N = 4Output : 4 4 4 4 4 4 4         4 3 3 3 3 3 4         4 3 2 2 2 3 4         4 3 2 1 2 3 4         4 3 2 2 2 3 4         4 3 3 3 3 3 4         4 4 4 4 4 4 4Input : N = 2Output : 2 2 2         2 1 2         2 2 2

方法1: 常见的观察结果是,这样形成的正方形大小为(2*N-1)x(2*N-1)。用N填充第一行和第列,最后一行和第列,然后逐渐减少N,并以同样的方式填充剩余的行和第列。填充两行两列后,每次减少N。

以下是上述方法的实施情况:

C++

// C++ program to print the
// spiral pattern
#include <bits/stdc++.h>
using namespace std;
// Function to print the pattern
void pattern( int value)
{
// Declare a square matrix
int row = 2 * value - 1;
int column = 2 * value - 1;
int arr[row][column];
int i, j, k;
for (k = 0; k < value; k++) {
// store the first row
// from 1st column to last column
j = k;
while (j < column - k) {
arr[k][j] = value - k;
j++;
}
// store the last column
// from top to bottom
i = k + 1;
while (i < row - k) {
arr[i][row - 1 - k] = value - k;
i++;
}
// store the last row
// from last column to 1st column
j = column - k - 2;
while (j >= k) {
arr[column - k - 1][j] = value - k;
j--;
}
// store the first column
// from bottom to top
i = row - k - 2;
while (i > k) {
arr[i][k] = value - k;
i--;
}
}
// print the pattern
for (i = 0; i < row; i++) {
for (j = 0; j < column; j++) {
cout << arr[i][j] << " " ;
}
cout << endl;
}
}
// Driver code
int main()
{
int n = 5;
pattern(n);
return 0;
}


JAVA

// Java program to print
// the spiral pattern
class GFG {
// Function to print the pattern
static void pattern( int value)
{
// Declare a square matrix
int row = 2 * value - 1 ;
int column = 2 * value - 1 ;
int [][] arr = new int [row][column];
int i, j, k;
for (k = 0 ; k < value; k++) {
// store the first row
// from 1st column to last column
j = k;
while (j < column - k) {
arr[k][j] = value - k;
j++;
}
// store the last column
// from top to bottom
i = k + 1 ;
while (i < row - k) {
arr[i][row - 1 - k] = value - k;
i++;
}
// store the last row
// from last column
// to 1st column
j = column - k - 2 ;
while (j >= k) {
arr[column - k - 1 ][j] = value - k;
j--;
}
// store the first column
// from bottom to top
i = row - k - 2 ;
while (i > k) {
arr[i][k] = value - k;
i--;
}
}
// print the pattern
for (i = 0 ; i < row; i++) {
for (j = 0 ; j < column; j++) {
System.out.print(arr[i][j] + " " );
}
System.out.println();
}
}
// Driver code
public static void main(String[] args)
{
int n = 5 ;
pattern(n);
}
}
// This code is contributed
// by ChitraNayal


Python3

# Python3 program to print
# the spiral pattern
# Function to print the pattern
def pattern(value):
# Declare a square matrix
row = 2 * value - 1
column = 2 * value - 1
arr = [[ 0 for i in range (row)]
for j in range (column)]
for k in range ( value):
# store the first row
# from 1st column to
# last column
j = k
while (j < column - k):
arr[k][j] = value - k
j + = 1
# store the last column
# from top to bottom
i = k + 1
while (i < row - k):
arr[i][row - 1 - k] = value - k
i + = 1
# store the last row
# from last column
# to 1st column
j = column - k - 2
while j > = k :
arr[column - k - 1 ][j] = value - k
j - = 1
# store the first column
# from bottom to top
i = row - k - 2
while i > k :
arr[i][k] = value - k
i - = 1
# print the pattern
for i in range (row):
for j in range (column):
print (arr[i][j], end = " " )
print ()
# Driver code
if __name__ = = "__main__" :
n = 5
pattern(n)
# This code is contributed
# by ChitraNayal


C#

// C# program to print
// the spiral pattern
using System;
class GFG {
// Function to print the pattern
static void pattern( int value)
{
// Declare a square matrix
int row = 2 * value - 1;
int column = 2 * value - 1;
int [, ] arr = new int [row, column];
int i, j, k;
for (k = 0; k < value; k++) {
// store the first row
// from 1st column to
// last column
j = k;
while (j < column - k) {
arr[k, j] = value - k;
j++;
}
// store the last column
// from top to bottom
i = k + 1;
while (i < row - k) {
arr[i, row - 1 - k] = value - k;
i++;
}
// store the last row
// from last column
// to 1st column
j = column - k - 2;
while (j >= k) {
arr[column - k - 1, j] = value - k;
j--;
}
// store the first column
// from bottom to top
i = row - k - 2;
while (i > k) {
arr[i, k] = value - k;
i--;
}
}
// print the pattern
for (i = 0; i < row; i++) {
for (j = 0; j < column; j++) {
Console.Write(arr[i, j] + " " );
}
Console.Write( "" );
}
}
// Driver code
public static void Main()
{
int n = 5;
pattern(n);
}
}
// This code is contributed
// by ChitraNayal


PHP

<?php
// PHP program to print
// the spiral pattern
// Function to print the pattern
function pattern( $value )
{
// Declare a square matrix
$row = 2 * $value - 1;
$column = 2 * $value - 1;
$arr = array ( array ());
for ( $k = 0; $k < $value ; $k ++)
{
// store the first row
// from 1st column to
// last column
$j = $k ;
while ( $j < $column - $k )
{
$arr [ $k ][ $j ] = $value - $k ;
$j ++;
}
// store the last column
// from top to bottom
$i = $k + 1;
while ( $i < $row - $k )
{
$arr [ $i ][ $row - 1 - $k ] = $value - $k ;
$i ++;
}
// store the last row
// from last column
// to 1st column
$j = $column - $k - 2;
while ( $j >= $k )
{
$arr [ $column - $k - 1][ $j ] = $value - $k ;
$j --;
}
// store the first column
// from bottom to top
$i = $row - $k - 2;
while ( $i > $k )
{
$arr [ $i ][ $k ] = $value - $k ;
$i --;
}
}
// print the pattern
for ( $i = 0; $i < $row ; $i ++)
{
for ( $j = 0; $j < $column ; $j ++)
{
echo $arr [ $i ][ $j ] . " " ;
}
echo "" ;
}
}
// Driver code
$n = 5;
pattern( $n );
// This code is contributed
// by ChitraNayal
?>


Javascript

<script>
// Javascript program to print the
// spiral pattern
// Function to print the pattern
function pattern(value)
{
// Declare a square matrix
let row = 2 * value - 1;
let column = 2 * value - 1;
let arr = new Array(row);
for (let i = 0; i < row; i++)
{
arr[i] = new Array(column);
}
let i, j, k;
for (k = 0; k < value; k++)
{
// Store the first row
// from 1st column to last column
j = k;
while (j < column - k)
{
arr[k][j] = value - k;
j++;
}
// Store the last column
// from top to bottom
i = k + 1;
while (i < row - k)
{
arr[i][row - 1 - k] = value - k;
i++;
}
// Store the last row
// from last column to 1st column
j = column - k - 2;
while (j >= k)
{
arr[column - k - 1][j] = value - k;
j--;
}
// Store the first column
// from bottom to top
i = row - k - 2;
while (i > k)
{
arr[i][k] = value - k;
i--;
}
}
// Print the pattern
for (i = 0; i < row; i++)
{
for (j = 0; j < column; j++)
{
document.write(arr[i][j] + " " );
}
document.write( "<br>" );
}
}
// Driver code
let n = 5;
pattern(n);
// This code is contributed by subham348
</script>


输出:

5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 5 5 4 3 3 3 3 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 2 1 2 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 3 3 3 3 4 5 5 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5

方法2: i=1 j=1 ,可以观察到所需矩阵的每个值 最大值(绝对值(i-n)、绝对值(j-n))+1 .

以下是上述方法的实施情况:

C++14

// C++ implementation of the approach
#include <algorithm>
#include <iostream>
using namespace std;
// Function to print the required pattern
void pattern( int n)
{
// Calculating boundary size
int p = 2 * n - 1;
for ( int i = 1; i <= p; i++) {
for ( int j = 1; j <= p; j++) {
// Printing the values
cout << max( abs (i - n), abs (j - n)) + 1 << " " ;
}
cout << endl;
}
}
// Driver code
int main()
{
int n = 5;
pattern(n);
return 0;
}
// This code is contributed by : Vivek kothari


C

// C implementation of the approach
#include <stdio.h>
#include <stdlib.h>
// Function Declaration
int max( int , int );
// Function to print the required pattern
void pattern( int n)
{
// Calculating boundary size
int size = 2 * n - 1;
for ( int i = 1; i <= size; i++)
{
for ( int j = 1; j <= size; j++)
{
// Printing the values
printf ( "%d " , max( abs (i - n),
abs (j - n)) + 1);
}
printf ( "" );
}
}
// Function to return maximum value
int max( int val1, int val2)
{
if (val1 > val2)
return val1;
return val2;
}
// Driver code
int main()
{
int n = 5;
pattern(n);
return 0;
}
// This code is contributed by Yuvaraj R


JAVA

// Java implementation of the approach
import java.io.*;
import java.util.*;
class GFG{
// Function to print the required pattern
public static void pattern( int n)
{
// Calculating boundary size
int size = 2 * n - 1 ;
for ( int i = 1 ; i <= size; i++)
{
for ( int j = 1 ; j <= size; j++)
{
// Printing the values
System.out.print(Math.max(
Math.abs(i - n),
Math.abs(j - n)) + 1 + " " );
}
System.out.println();
}
}
// Driver code
public static void main(String[] args)
{
int n = 5 ;
pattern(n);
}
}
// This code is contributed by Yuvaraj R


Python3

# Python3 implementation of the approach
# Function to print the required pattern
def pattern(n):
# Calculating boundary size
p = 2 * n - 1
for i in range ( 1 , p + 1 ):
for j in range ( 1 , p + 1 ):
# Printing the values
print ( max ( abs (i - n), abs (j - n)) + 1 , " " , end = "")
print ()
# Driver code
n = 5
pattern(n)
# This code is contributed by subhammahato348


C#

// C# implementation of the approach
using System;
class GFG{
// Function to print the required pattern
static void pattern( int n)
{
// Calculating boundary size
int size = 2 * n - 1;
for ( int i = 1; i <= size; i++)
{
for ( int j = 1; j <= size; j++)
{
// Printing the values
Console.Write(Math.Max(Math.Abs(i - n),
Math.Abs(j - n)) +
1 + " " );
}
Console.WriteLine();
}
}
// Driver code
public static void Main()
{
int n = 5;
pattern(n);
}
}
// This code is contributed by subhammahato348


Javascript

<script>
// Javascript implementation of the approach
// Function to print the required pattern
function pattern(n)
{
// Calculating boundary size
let p = 2 * n - 1;
for (let i = 1; i <= p; i++) {
for (let j = 1; j <= p; j++) {
// Printing the values
document.write((Math.max(Math.abs(i - n),
Math.abs(j - n)) + 1) + " " );
}
document.write( "<br>" );
}
}
// Driver code
let n = 5;
pattern(n);
</script>


输出

5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 5 5 4 3 3 3 3 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 2 1 2 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 3 3 3 3 4 5 5 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享