تمرین هندوانه خوری کوئرا با جاوا
در این نوشته تمرین “هندونهخوری” که در وبسایت کوئرا موجود است را برای شما کاربران عزیز حل کردهایم.
تمرین هندوانه خوری کوئرا با جاوا
حنا وارد مسابقه هندونهخوری شده است. در این مسابقه nn هندوانه وجود دارد که به ترتیب با شمارههای ۱ تا n نامگذاری شدهاند، همچنین وزن هندوانه iام، wi است. (وزن هندوانهها متمایز است.) حنا در هر مرحله از این مسابقه دو هندوانهای که کمترین شماره را دارند را انتخاب میکند و هندوانهای که سبکتر است را میخورد. حنا به این کار ادامه میدهد تا فقط یک هندوانه باقی بماند. بعد از مسابقه حنا به این فکر رفته که آخرین هندوانه چه شمارهای داشت اما از آنجا که خیلی هندوانه خورده، فکرش کار نمیکند. به حنا کمک کنید و با گرفتن wi ها شماره آخرین هندوانه را بگویید.
ورودی سوال
در سطر اول تعداد هندوانهها آمده است. در سطر بعدی w_1, w_2 آمده است.
1≤ n ≤100
تضمین میشود که w_i ها متمایز هستند.
خروجی سوال
در تنها سطر خروجی شماره هندوانه باقی مانده را چاپ کنید.
مثال سوال
input 1:
5
4 3 1 5 2
output 1:
4
input 2:
5
2 4 5 1 3
output 2:
3
کد حل
import java.util.Scanner; public class Main { static Scanner scanner; public static void main(String[] args) { int i; // melon count scanner = new Scanner(System.in); int n = Integer.parseInt(scanner.nextLine()); if(n < 1) n = 1; // weight String weightText = scanner.nextLine(); String[] weightTextArray = weightText.split(" "); int s1 = 0; int s2 = 1; int sNext = 2; int min = 0; for (i = 0 ; i < n-1; i++) { min = Math.min(Integer.parseInt(weightTextArray[s1]), Integer.parseInt(weightTextArray[s2])); if(min == Integer.parseInt(weightTextArray[s1])) { weightTextArray[s1] = "-1"; s1 = sNext; sNext++; } else if(min == Integer.parseInt(weightTextArray[s2])) { weightTextArray[s2] = "-1"; s2 = sNext; sNext++; } } for (i = 0; i < n; i++) if(!weightTextArray[i].equals("-1")) { System.out.println(i+1); break; } } }
روش حل این سوال به شرح زیر است:
ابتدا از ورودی مقدار n به عنوان تعداد هندوانهها دریافت شده است؛ در خطوط بعدی هم مقدار وزنها گرفته شده است این کار با توابع داخلی زبان برنامه نویسی جاوا انجام شده است و تابع دریافت ورودیها Scanner است. در ادامه این مقادیر را وارد یک حلقه میکنیم و با متغیرهای s1 و s2 و sNext خانههایی که باید بررسی شوند را به ترتیب بررسی میکنیم و در هر بار اجرای حلقه کم وزنترین هندوانه خورده میشود. هر هنداونهای که خورده شد در ستون وزن آن مقدار منفی یک یا -1 را قرار میدهیم و خانهی بعدی که باید بررسی کنیم را از عدد موجود در sNext بدست میآوریم و در یکی از متغیرهای s1 و s2 قرار میدهیم و در ادامهی کار مقدار sNext را یکی اضافه میکنیم؛ این کار تا پایان وزنها انجام میشود. در نهایت یک حلقه در آخر برنامه میگذاریم که بررسی کنید تنها خانه ای که مقدار -1 نداشت را شمارهی آن را در خروجی چاپ کند و برنامه به پایان میرسد.
منبع سوال: وبسایت کوئرا
اگر روش حل بهتری برای این تمرین دارید برای ما ارسال کنید تا با نام خودتان به اشتراک بگذاریم. اگر سوال خاصی را مدنظر دارید در بخش نظرات برای ما ارسال کنید تا حل آن سوال را در الویت محتوای سایت بگذاریم.
ارسال پاسخ