Imprimiendo el Patrón Triángulo usando el último término N

Dado un número N que representa el último término del Patrón Triángulo. La tarea es imprimir el patrón de triángulos del 1 al N, de modo que cada fila esté completa.
El patrón de triángulo se da como: 
 

   1
  2 3
 4 5 6
7 8 9 10
.
.

Ejemplos: 
 

Input: N = 3
Output:
 1
2 3

Input: N = 7
Output:
   1
  2 3
 4 5 6

7 will not be printed as 
it would result in an incomplete row

Acercarse: 
 

  • Encuentre el número de filas completas del último término dado N. 
    • Como: 
      Para Max Height = 1, el último término sería 1 
      Para Max Height = 2, el último término sería 3 
      Para Max Height = 3, el último término sería 6
    • Así que el último término forma un patrón: 1, 3, 6, 10, 15,…
    • Por tanto, el n-ésimo término de la serie 1, 3, 6, 10, 15,… 
      A(n) = 1 + 2 + 3 + 4… + (n – 1) + n 
      = n(n + 1) / 2
      es decir, A(n) es la suma de los primeros n números naturales.
    • así que en 
    A(n) = n(n + 1) / 2
    A(n) represents the last term (as per our problem),
    and n represents the max height of the Triangle
  • Por lo tanto, esto puede verse como: 
    Last term = height (height + 1) / 2
  • Por lo tanto, 
    height = (-1 + sqrt(1 + 8*lastTerm)) / 2
  • Después de encontrar la altura máxima, el patrón de triángulo se puede imprimir fácilmente.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ code for printing the
// Triangle Pattern using last term N
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to demonstrate printing pattern
void triangle(int n)
{
    // number of spaces
    int k = 2 * n - 2;
 
    // character to be printed
    int ch = 1;
 
    // outer loop to handle number of rows
    // n in this case
    for (int i = 0; i < n; i++) {
 
        // inner loop to handle number spaces
        // values changing acc. to requirement
        for (int j = 0; j < k; j++)
            cout << " ";
 
        // decrementing k after each loop
        k = k - 1;
 
        // inner loop to handle number of columns
        // values changing acc. to outer loop
        for (int j = 0; j <= i; j++) {
            // printing stars
            cout << ch++ << " ";
        }
 
        // ending line after each row
        cout << endl;
    }
}
 
// Function to find the max height
// or the number of lines
// in the triangle pattern
int maxHeight(int n)
{
    return (((int)sqrt(1 + 8.0 * n)) - 1) / 2;
}
 
// Driver Function
int main()
{
    int N = 9;
    triangle(maxHeight(N));
    return 0;
}

Java

// Java code for printing the
// Triangle Pattern using last term N
import java.util.*;
 
class GFG
{
 
// Function to demonstrate printing pattern
static void triangle(int n)
{
    // number of spaces
    int k = 2 * n - 2;
 
    // character to be printed
    int ch = 1;
 
    // outer loop to handle number of rows
    // n in this case
    for (int i = 0; i < n; i++)
    {
 
        // inner loop to handle number spaces
        // values changing acc. to requirement
        for (int j = 0; j < k; j++)
            System.out.print(" ");
 
        // decrementing k after each loop
        k = k - 1;
 
        // inner loop to handle number of columns
        // values changing acc. to outer loop
        for (int j = 0; j <= i; j++)
        {
            // printing stars
            System.out.print(ch++ + " ");
        }
 
        // ending line after each row
        System.out.println();
    }
}
 
// Function to find the max height
// or the number of lines
// in the triangle pattern
static int maxHeight(int n)
{
    return (((int)Math.sqrt(1 + 8.0 * n)) - 1) / 2;
}
 
// Driver Code
public static void main(String[] args)
{
    int N = 9;
    triangle(maxHeight(N));
}
}
 
// This code is contributed by PrinciRaj1992

Python3

# Python3 code for printing the
# Triangle Pattern using last term N
from math import sqrt
 
# Function to demonstrate printing pattern
def triangle(n) :
 
    # number of spaces
    k = 2 * n - 2;
 
    # character to be printed
    ch = 1;
 
    # outer loop to handle number of rows
    # n in this case
    for i in range(n) :
 
        # inner loop to handle number spaces
        # values changing acc. to requirement
        for j in range(k) :
            print(" ", end = "");
 
        # decrementing k after each loop
        k = k - 1;
 
        # inner loop to handle number of columns
        # values changing acc. to outer loop
        for j in range(i + 1) :
             
            # printing stars
            print(ch, end = " ");
            ch += 1;
             
        # ending line after each row
        print()
 
# Function to find the max height
# or the number of lines
# in the triangle pattern
def maxHeight(n) :
    ans = (sqrt(1 + 8.0 * n) - 1) // 2;
    return int(ans);
 
# Driver Code
if __name__ == "__main__" :
 
    N = 9;
    triangle(maxHeight(N));
     
# This code is contributed by AnkitRai01

C#

// C# code for printing the
// Triangle Pattern using last term N
using System;
     
class GFG
{
 
// Function to demonstrate printing pattern
static void triangle(int n)
{
    // number of spaces
    int k = 2 * n - 2;
 
    // character to be printed
    int ch = 1;
 
    // outer loop to handle number of rows
    // n in this case
    for (int i = 0; i < n; i++)
    {
 
        // inner loop to handle number spaces
        // values changing acc. to requirement
        for (int j = 0; j < k; j++)
            Console.Write(" ");
 
        // decrementing k after each loop
        k = k - 1;
 
        // inner loop to handle number of columns
        // values changing acc. to outer loop
        for (int j = 0; j <= i; j++)
        {
            // printing stars
            Console.Write(ch++ + " ");
        }
 
        // ending line after each row
        Console.WriteLine();
    }
}
 
// Function to find the max height
// or the number of lines
// in the triangle pattern
static int maxHeight(int n)
{
    return (((int)Math.Sqrt(1 + 8.0 * n)) - 1) / 2;
}
 
// Driver Code
public static void Main(String[] args)
{
    int N = 9;
    triangle(maxHeight(N));
}
}
 
// This code is contributed by Princi Singh

Javascript

<script>
// Javascript code for printing the
// Triangle Pattern using last term N
 
// Function to demonstrate printing pattern
function triangle(n)
{
 
    // number of spaces
    var k = 2 * n - 2;
 
    // character to be printed
    var ch = 1;
 
    // outer loop to handle number of rows
    // n in this case
    for (var i = 0; i < n; i++) {
 
        // inner loop to handle number spaces
        // values changing acc. to requirement
        for (var j = 0; j < k; j++)
            document.write(" ");
 
        // decrementing k after each loop
        k = k - 1;
 
        // inner loop to handle number of columns
        // values changing acc. to outer loop
        for (var j = 0; j <= i; j++) {
            // printing stars
            document.write(ch++ + " ");
        }
 
        // ending line after each row
        document.write("<br>");
    }
}
 
// Function to find the max height
// or the number of lines
// in the triangle pattern
function maxHeight(n)
{
    return parseInt(((parseInt(Math.sqrt(1 + 8.0 * n))) - 1) / 2);
}
 
// Driver Function
var N = 9;
triangle(maxHeight(N));
 
// This code is contributed by noob2000.
</script>
Producción: 

    1 
   2 3 
  4 5 6

 

Complejidad temporal: O(n 2 )

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por spp____ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *