JavaRush /جاوا بلاگ /Random-SD /هڪ طرفي ۽ ٻه طرفي صفن ۾ شامل مسئلن کي حل ڪرڻ
Анзор Кармов
سطح
Санкт-Петербург

هڪ طرفي ۽ ٻه طرفي صفن ۾ شامل مسئلن کي حل ڪرڻ

گروپ ۾ شايع ٿيل
ھي مضمون غور ڪندو (۽، وڏي حد تائين، آزاد تجزيو لاءِ مهيا ڪرڻ) مسئلن ۾ شامل آھن arrays. اسان هيٺ ڏنل علائقن ۾ اسان جي صلاحيتن کي بهتر ڪنداسين:
  1. هڪ طرفي صفون

    1. مسئلا "سلسلن کي جاري رکو" ؛
    2. عنصر ڳولڻ جا ڪم؛
    3. صفن جي عنصرن کي ترتيب ڏيڻ ۾ مسئلا.
  2. ٻه-dimensional arrays

    1. ڪم "فارم جو هڪ ميٽرڪس ٺاهيو" ؛
    2. ٽاسڪ "سڀ کان وڌيڪ غير متوقع جڳهن ۾ عناصر ڳوليو (قطار، ڪالمن، ڊرون)" ؛
    3. ڪم "پاڻي جي جنگ لاء ٻيڙين کي ترتيب ڏيو . "
سڀني مسئلن لاءِ اسين استعمال ڪنداسين انگن اکرن جا صفا. اسان هڪ طرفي ۽ ٻه طرفي صفن تي مسئلا حل ڪندا آهيون - 1

هڪ طرفي صفن ۾ شامل مسئلا

تسلسل جاري رکو

ڪمن جي ھن سلسلي ۾ توھان کي ضرورت پوندي:
  1. نموني جو اندازو لڳايو جنهن جي مطابق هي يا اهو عددي ترتيب ٺهيل آهي.
  2. هڪ فنڪشن لکو جيڪو ڏنل ترتيب جي پهرين N عناصر کي انٽيجر ايري جي طور تي ٺاهي ۽ اسڪرين تي صفن جي عناصر کي ڏيکاري ٿو.
فرض ڪريو اسان کي هيٺين نمبرن جي سيريز کي جاري رکڻ جو ڪم درپيش آهي:

1, 2, 3, 4, 5…
قدم 1: نموني جي سڃاڻپ ڪريو. هتي هر شيءِ ابتدائي آهي - اهو قدرتي انگن جو هڪ سلسلو آهي. قدم 2: ھڪڙو فنڪشن لکو جيڪو ھڪڙي قطار جي ھڪڙي قطار جي پھرين اين عناصر کي ھڪڙي ترتيب جي شڪل ۾ ٺاھيندو:
public class Main {

    public static void main(String[] args) {
        System.out.println(Arrays.toString(createArrayOfIntegers(10)));

        // Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    }

    public static int[] createArrayOfIntegers(int n) {
        int[] array = new int[n];
        for (int i = 1; i <= n; i++) {
            array[i-1] = i;
        }

        return array;
    }
}
ساڳيءَ طرح، ضروري آھي ته فعل لکڻ لاءِ جيڪي ھيٺيون تسلسل جاري رکندا.

A. 2,  4,  6,   8,  10...
B. 1,  3,  5,   7,   9...
C. 1,  4,  9,  16,  25...
D. 1,  8, 27,  64, 125...
E. 1, -1,  1,  -1,   1,  -1...
F. 1, -2,  3,  -4,   5,  -6...
G. 1, -4,  9, -16,  25....
H. 1,  0,  2,   0,   3,   0,  4....
I. 1,  2,  6,  24, 120, 720...
J. 1,  1,  2,   3,   5,   8, 13, 21…

عناصر جي ڳولا ڪريو

ڪمن جي هن سلسلي ۾، ضروري آهي ته ختم ٿيل صف ۾ هڪ عنصر ڳولڻ ضروري آهي جنهن ۾ ڪجهه خاصيتون آهن. مثال طور، عنصر وڌ ۾ وڌ قدر سان. ظاهر ڪرڻ لاءِ، اچو ته هڪ فنڪشن لاءِ ڪوڊ لکون جيڪو هڪ ايري کڻي ٿو ۽ صف ۾ وڌ کان وڌ عنصر جي انڊيڪس کي طئي ڪري ٿو، ۽ پوءِ هن عنصر کي ان جي انڊيڪس سان گڏ ڪنسول ۾ آڻي ٿو. مان اهو به ڏيکاريندس ته ڪيئن، ڪلاس کي استعمال ڪندي، java.util.concurrent.ThreadLocalRandomتوهان تڪڙو تڪڙو ٺاهي سگهو ٿا هڪ انٽيجر ايري کي ڏنل ڊيگهه جي، جنهن ۾ بي ترتيب عناصر شامل آهن:
public class Main {

    public static void main(String[] args) {
        int[] array = generateRandomIntArray(10);
        findMax(array);

        /*
        Output:
        Generated random array: [50551934, -551646189, 410352642, 1822778873, -1744293692, -1140287711, 878876868, -2116893120, -797503442, -703924530]
        Max element is [1822778873] with index [3]
        */

    }


    public static int[] generateRandomIntArray(int n) {
        int[] array = ThreadLocalRandom.current().ints().limit(n).toArray();
        System.out.println("Generated random array: " + Arrays.toString(array));
        return array;
    }

    public static void findMax(int[] array) {
        int maxIndex = 0;
        int max = array[maxIndex];
        for (int i = 1; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
                maxIndex = i;
            }
        }

        System.out.println(String.format("Max element is [%d] with index [%d]", max, maxIndex));
    }
}
هاڻي ڪم پاڻ. بي ترتيب انٽيجر عناصر جي هڪ صف مان اسان کي ڳولڻ جي ضرورت آهي:
  1. وڌ ۾ وڌ.
  2. گھٽ ۾ گھٽ.
  3. سراسري.
  4. وڌ ۾ وڌ ۽ گھٽ ۾ گھٽ عناصر جي وچ ۾ عناصر جو تعداد.
  5. پهريون بنيادي نمبر.
  6. آخري پرائم نمبر.
  7. صف ۾ بنيادي نمبرن جو تعداد.
توھان ڏيکاري سگھوٿا قيمت ۽ انڊيڪس ٻئي. جيڪڏهن ڪو به عنصر نه آهي جيڪو توهان ڳولي رهيا آهيو، ان کي اسڪرين تي ڏيکاريو توهان جي سهولت تي. آخري ڪم لاءِ، توھان کي تيار ڪرڻ جي ضرورت آھي انٽيجر عناصر جي ھڪڙي ترتيب سان ترتيب ڏنل ترتيب سان. ھن صف ۾، توھان کي ضرورت آھي ھڪڙي عنصر کي قدر جي لحاظ کان گھٽ ۾ گھٽ عملن جي تعداد ۾ ( اشارو ).

ترتيب ڏيڻ

مسئلن جي هن سلسلي ۾، توهان کي مختلف ترتيب ڏيڻ واري الگورتھم استعمال ڪندي انٽيجر عناصر جي هڪ صف کي ترتيب ڏيڻ جي ضرورت آهي. انٽرنيٽ تي مختلف الگورتھم تي ڪافي مواد موجود آھن. پهرين الگورتھم جي جوهر کي سمجھڻ جي ڪوشش ڪريو، ۽ پوء ان کي پاڻ لاڳو ڪرڻ جي ڪوشش ڪريو. پهرين ڪاغذ تي (بلاڪ ڊاگرام، سيڊوڪوڊ، جيڪو به توهان لاءِ مناسب هجي) ۽ پوءِ IDEA ۾. لاڳو ڪرڻ لاء الگورتھم:
  • بلبل جي ترتيب؛
  • چونڊ جي قسم؛
  • داخل ڪرڻ جي ترتيب؛
  • ضم ڪرڻ جو قسم.

ٻه-dimensional arrays شامل مسئلا

هڪ ميٽرڪس ٺاھيو

ڪمن جي ايندڙ سيريز ۾، اھو ضروري آھي ته ٺاھيو (ڪنسول ڏانھن ٻاھر) ٻه-dimensional arrays (ميٽرڪس) ھڪڙي خاص طريقي سان ٺھيل آھن: اھي لازمي طور تي ڪم جي بيان ڪيل نموني سان ملن ٿيون. اچو ته توهان کي هڪ مثال ڏيان. اسان کي فارم جي هڪ ميٽرڪس ٺاهڻ ۽ ڊسپلي ڪرڻ جي ضرورت آهي m*n(جتي mقطار جو تعداد آهي، ۽ nقطار ۾ عناصر جو تعداد آهي):

1, 2, 3, 4
5, 6, 7, 8
9,10,11,12
اچو ته هڪ فنڪشن لکون جيڪو اسان جي لاءِ سڀ ڪجهه ڪندو، ۽ پڻ هڪ فنڪشن ڏيو جيڪو خوبصورتيءَ سان ميٽرڪس کي ڪنسول ۾ آئوٽ ڪندو (توهان کي اهو مفيد معلوم ٿيندو):
public class Main {

    public static void main(String[] args) {
        createAndDrawMatrix(3, 4);

    }

    public static void createAndDrawMatrix(int m, int n) {
        int[][] matrix = new int[m][n];

        int value = 1;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                matrix[i][j] = value;
                value ++;
            }
        }

        printMatrix(matrix);
    }

    public static void printMatrix(int[][] matrix) {
        for (int[] array : matrix) {
            for (int anInt : array) {
                System.out.print(String.format("%3d", anInt));
            }
            System.out.println();
        }
    }
}
m*nھاڻي ڪم: فارم جو ميٽرڪس ڏيکاريو : 4, 3, 2, 1 8, 7, 6, 5, 12,11,10, 9 ----------- 1, 4, 7 2, 5, 8 3, 6, 9 ----------- 9, 8, 7 6, 5, 4 3, 2, 1 ----------- 12,11,10, 9 8, 7, 6, 5, 4, 3, 2, 1

عناصر جي ڳولا ڪريو

هن حصي ۾، اهو ضروري آهي ته ميٽرڪس جي مختلف حصن ۾ مختلف عناصر جي ڳولا کي لاڳو ڪرڻ: هڪ مخصوص ڪالمن ۾ يا مخصوص قطار ۾. اچو ته فرض ڪريون ته اسان وٽ فارم جو هڪ ميٽرڪس آهي: -1 2 -3 4 -5 6 -7 8 -9 10 -11 12 -13 14 -15 16 -17 18 -19 20 -21 22 -23 24 -25 26 -27 28 -29 30 -31 32 -33 34 -35 مثال طور، اچو ته ٽئين قطار ۾ منفي عنصرن جو تعداد ڳولهيون:
public class Main {

    public static void main(String[] args) {
        int [][] matrix = {
                { -1,   2,   -3,    4,   -5,    6,   -7},
                {  8,  -9,   10,  -11,   12,  -13,   14},
                {-15,  16,  -17,   18,  -19,   20,  -21},
                { 22, -23,   24,  -25,   26,  -27,   28},
                {-29,  30,  -31,   32,  -33,   34,  -35}
        };

        findNegativeCountInRow(matrix, 3);
    }

    private static void findNegativeCountInRow(int[][] matrix, int rowNumber) {
        int negativeCount = 0;
        for (int element : matrix[rowNumber]){
            if (element < 0) {
                negativeCount ++;
            }
        }

        System.out.println("Matrix: ");
        printMatrix(matrix);
        System.out.println(String.format("Has %d negative elements in #%d row ", negativeCount, rowNumber));

    }

    public static void printMatrix(int[][] matrix) {
        for (int[] array : matrix) {
            for (int anInt : array) {
                System.out.print(String.format("%5d", anInt));
            }
            System.out.println();
        }
    }
}
مکيه طريقي تي عمل ڪرڻ جي نتيجي ۾، هيٺ ڏنل ڪنسول کي ٻاھر ڪڍيو ويندو:

Matrix: 
   -1    2   -3    4   -5    6   -7
    8   -9   10  -11   12  -13   14
  -15   16  -17   18  -19   20  -21
   22  -23   24  -25   26  -27   28
  -29   30  -31   32  -33   34  -35
Has 3 negative elements in #3 row 
هاڻي ڪم. ڪنهن به بي جوڙ لاءِ، فارم جو nهڪ ميٽرڪس پرنٽ ڪريو :n*n

1,  -2,  3,  
-4,  5, -6,
7,  -8,  9
هن ميٽرڪس مان، نڪتل:
  • سڀ منفي عنصر؛
  • تار ۾ سڀ منفي عنصر i؛
  • ڪالمن ۾ سڀ منفي عنصر j؛
  • سڀ ڊرون عناصر (مٿي کاٻي ڪنڊ کان شروع)؛
  • سڀ ڊرون عناصر (هيٺيان کاٻي ڪنڊ کان شروع ٿيندڙ).

سمنڊ جي جنگ

آخري سيڪشن هڪ ستاري سان گڏ: ڪابه صلاح يا مثال. Matrices سامونڊي جنگ جي راند کي پروگرام ڪرڻ لاء مثالي آهن. هن راند جي پروگرامنگ جي مرحلن مان هڪ آهي راند جي ميدان تي جهازن جي جڳهه. جيڪڏهن توهان انهن مسئلن جو هڪ انگ حل ڪيو، باقي يقين رکو ته توهان بحري جنگ کي منهن ڏيڻ جي قابل هوندا. تنهن ڪري، هڪ 10x10 ميٽرڪس ڏنو ويو جنهن ۾ صفر شامل آهن. اچو ته فرض ڪريو ته اهو بحري جنگ کيڏڻ جو ميدان آهي. هن فيلڊ ۾، 0 هڪ خالي سيل آهي، 1 هڪ ٻيڙي يا ٻيڙي جو حصو آهي. افعال لکو، جن مان هر هڪ، سامونڊي جنگ جي راند جي ضابطن جي مطابق، انهن کي بي ترتيب طور تي رکي ٿو:
  • 10 سنگل ڊيڪ ٻيڙيون؛
  • 10 ڊبل ڊيڪ ڪوربل؛
  • 5 ٽي ڊيڪر ٻيڙيون؛
  • سامونڊي جنگ جي راند لاءِ سڀني ٻيڙين کي ترتيب ڏئي ٿو (4 سنگل ڊيڪ، 3 ڊبل ڊيڪ، 2 ٽي ڊيڪ، 1 چار ڊيڪ).
اهو ئي سڀ ڪجهه آهي! جيئن ڪنهن به پروگرامنگ موضوع سان، arrays مشق ذريعي بهترين سکيا ويندا آهن. خوش گرم اپ!
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION