لینک‌های مفید برای شرکت در مسابقه:

می‌توانید سوال‌های خود را از بخش «سوال بپرسید» مطرح کنید.

دیباگ مرتب‌سازی


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

منظور از یک «جایشگت» از اعداد 11 تا nn یعنی دنباله‌ای به طول nn مثل p1,p2,,pnp_1, p_2, \dots, p_n \, که هر کدام از اعداد 11 تا nn دقیقا یکبار در آن ظاهر شده است.

به یک دنباله مثل a1,a2,,ana_1, a_2, \dots, a_n \, «صعودی» می‌گوییم هرگاه برای هر ii که 1in11 \leq i \leq n - 1\, داریم ai<ai+1a_i < a_{i + 1} \,.

توضیح تصویر

از محمد جعفری خواستیم که در ماه‌رمضان برنامه‌ای بنویسد که با ورودی گرفتن nn و یک جایگشت از اعداد 11 تا nn آن را صعودی مرتب کند. اما به دلیل فشار روزه برنامه زیر نوشته شده که ایراد دارد.

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

کد پایتون
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)
Python
کد سی‌پلاس‌پلاس
#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;
}
C++
کد جاوا
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(' ');
        }
    }
}
Java

با دریافت عدد nn جایگشتی از 11 تا nn را چاپ کنید که این برنامه به ازای این جایگشت خروجی نادرست می‌دهد.

ورودی🔗

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

خروجی🔗

در تنها سطر خروجی یک جایگشت از اعداد 11 تا nn را چاپ کنید که این برنامه داده شده در سوال فوق خروجی نادرست می‌دهد.

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

مثال🔗

ورودی نمونه ۱🔗

3
Plain text

خروجی نمونه ۱🔗

3 2 1
Plain text

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

ورودی نمونه ۲🔗

5
Plain text

خروجی نمونه ۲🔗

3 4 2 5 1
Plain text

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

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.