सीढ़ी के लिए यह समाधान सही आउटपुट प्रिंट करता है, लेकिन विपरीत दिशा में। वांछित परिणाम प्राप्त करने के लिए इस समाधान को बदलने का कोई विचार है?

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;

public class Solution {

// Complete the staircase function below.
static void staircase(int n) {
int counter=0;
    for(int i=0; i<n;i++)
    {
        //for (int k=0; k<n-k-1;k++)
        //  {
        //      System.out.println("");
        //  }
        System.out.print("\n");
        System.out.print("#");
        counter++;

        for(int j=0; j<counter-1;j++) 
        {

            System.out.print("#");
        }
    }   
}

private static final Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
    int n = scanner.nextInt();
    scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

    staircase(n);

    scanner.close();
}
}

इनपुट:

6

अपेक्षित उत्पादन:

     #
    ##
   ###
  ####
 #####
######

वास्तविक आउटपुट:

#
##
###
####
#####
######

यह एक हैकररैंक आसान चुनौती के लिए है। मैं सिर्फ अपने दृष्टिकोण का उपयोग करने में सक्षम होना चाहता हूं जो मैंने ऑनलाइन खोजे गए समाधान के बजाय खोजा था। धन्यवाद!

0
DavidKenyon96 8 अक्टूबर 2018, 20:35

6 जवाब

सबसे बढ़िया उत्तर

आपको बस दो बदलाव करने हैं:

सबसे पहले आपको एक लूप जोड़ना होगा जो रिक्त स्थान प्रिंट करेगा। यदि आप लूप को n से शुरू करते हैं और लूप को i से अधिक या उसके बराबर होने तक, घटाते समय, यह रिक्त स्थान की सही मात्रा को प्रिंट करेगा।

दूसरा, आपको लूप के अंत में नई लाइन की आवश्यकता है:

static void staircase(int n) {

   int counter=0;
   for(int i=0; i<n;i++)
   {
       counter++;
       for(int k=n; k>= i;k--)
       {
           System.out.print(" "); 
       } 
       for(int j=0; j<=counter-1;j++) 
       {
           System.out.print("#");
       }

       System.out.print("\n");
   }
}  

आउटपुट:

     #
    ##
   ###
  ####
 #####
######

इसके अलावा आपके कोड पर सिर्फ एक नोट। System.in को बंद करना गलत है। सामान्य नियम यह है कि यदि आपने कोई संसाधन नहीं खोला है, तो आपको उसे बंद नहीं करना चाहिए।

2
GBlodgett 8 अक्टूबर 2018, 23:48

अतिरिक्त counter चर का उपयोग करने की आवश्यकता नहीं है। बस इसे आजमाएं:

static void printStaircase(int n) {
    if (n < 0) {
        return;
    }

    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n - i; ++j) {
            System.out.print('\u00a0'); // nbsp
        }
        for (int j = n - i + 1; j <= n; ++j) {
            System.out.print('#');
        }
        System.out.println();
    }
}
1
Roman Posokhin 8 अक्टूबर 2018, 21:03

एक अन्य प्रस्ताव:

static void staircase(int n) {
    for(int i=n; i> 0; i--) {
        String s= "";
        for(int j=1; j<=n-i+1; j++) s+="#";
        System.out.printf("%"+n+"s\n", s);

    }
}
0
elhaj 13 मार्च 2020, 12:00

यह काम करना चाहिए

 static void staircase(int n) {
     String p = "";
  for(int i = 0 ; i< n ; i++){
      p = p + "#";
      System.out.printf("%"+n+"s\n", p);
     
  }

}
0
cedric maroka 7 अगस्त 2020, 03:46

और दूसरा तरीका

fun staircase(n: Int): Unit {
    for (i in 1..n) {
        print(" ".repeat(n-i))
        println("#".repeat(i))
    }
}
0
hhuseyin 9 सितंबर 2020, 18:02
public static void staircase(int n) {
    int counter = 0;
    for (int i = 1; i <= n; i++) {
        counter++;
        for (int x = n-1; x >= i; x--) {
            System.out.print(" ");
        }
        for (int j = 0; j <= counter - 1; j++) {
            System.out.print("#");
        }
        if (i != n) {
            System.out.println();
        } else {
            System.out.print("");
        }
    }
}
0
Hanamant Jadhav 29 मई 2021, 21:30