• محدودیت زمان: ۰.۵ ثانیه
  • محدودیت حافظه: ۶۴ مگابایت

منظور از یک «جایشگت» از اعداد \(1\) تا \(n\) یعنی دنباله‌ای به طول \(n\) مثل \(p_1, p_2, \dots, p_n \,\) که هر کدام از اعداد \(1\) تا \(n\) دقیقا یکبار در آن ظاهر شده است.

به یک دنباله مثل \(a_1, a_2, \dots, a_n \,\) «صعودی» می‌گوییم هرگاه برای هر \(i\) که \(1 \leq i \leq n - 1\,\) داریم \(a_i < a_{i + 1} \,\).

توضیح تصویر

از محمد جعفری خواستیم که در ماه‌رمضان برنامه‌ای بنویسد که با ورودی گرفتن \(n\) و یک جایگشت از اعداد \(1\) تا \(n\) آن را صعودی مرتب کند. اما به دلیل فشار روزه برنامه زیر نوشته شده که ایراد دارد.

برنامه‌های زیر همگی یکسان هستند و صرفا به زبان‌های مختلف ترجمه شده است.

کد پایتون

n = int(input())
arr = list(map(int, input().split()))

for i in range(n):
    for j in range(i, n - 1):
        if arr[j] > arr[j + 1]:
            arr[j], arr[j + 1] = arr[j + 1], arr[j]

print(*arr)

کد سی‌پلاس‌پلاس

#include <iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;

    int arr[n];
    for (int i = 0; i < n; i++)
        cin >> arr[i];

    for (int i = 0; i < n; i++)
        for (int j = i; j + 1 < n; j++)
	    if (arr[j] > arr[j + 1])
                swap(arr[j], arr[j + 1]);

    for (int i = 0; i < n; i++)
    {
        cout << arr[i];
        
        if (i == n - 1)
            cout << '\n';
        else
            cout << ' ';
    }

    return 0;
}

کد جاوا

import java.util.Scanner;

public class Main {
	
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int[] arr = new int[n];
        for (int i = 0; i < n; i++)
            arr[i] = sc.nextInt();

        for (int i = 0; i < n; i++)
            for (int j = i; j + 1 < n; j++)
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;
                }

        for (int i = 0; i < n; i++) {
            System.out.print(arr[i]);
            if (i == n - 1)
                System.out.println();
            else
                System.out.print(' ');
        }
    }
}

با دریافت عدد \(n\) جایگشتی از \(1\) تا \(n\) را چاپ کنید که این برنامه به ازای این جایگشت خروجی نادرست می‌دهد.

ورودی

در تنها سطر ورودی عدد صحیح و مثبت \(n\) داده می‌شود. \[3 \leq n \leq 100\]

خروجی

در تنها سطر خروجی یک جایگشت از اعداد \(1\) تا \(n\) را چاپ کنید که این برنامه داده شده در سوال فوق خروجی نادرست می‌دهد.

اگر چند جواب برای مسئله وجود دارد می‌توانید هر کدام که می‌خواهید را چاپ کنید.

مثال

ورودی نمونه ۱

3

خروجی نمونه ۱

3 2 1

خروجی برنامه‌های بالا به ازای این ورودی 2 1 3 است که صعودی مرتب نشده است.

ورودی نمونه ۲

5

خروجی نمونه ۲

3 4 2 5 1

خروجی برنامه‌های بالا به ازای این ورودی 3 2 1 4 5 است که صعودی مرتب نشده است.

ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.