لیستی از امتیازهای بازیکنان را در یک std::set ذخیره کن و بیشترین امتیاز را با استفاده از std::set::end پیدا کرده و چاپ کن؛ اگر مجموعه خالی بود پیام مناسبی نمایش دهد.
6.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:39 0.0
برای حل این مسئله از STL در C++ استفاده کن: هدر برای نگهداری امتیازها (که به صورت مرتب و بدون تکرار ذخیره میشوند) و برای ورودی/خروجی لازم است. قبل از گرفتن عنصر انتهایی حتماً با empty() بررسی کن که مجموعه خالی نباشد؛ سپس از it = s.end() و کاهشدهی (مثل --it) یا std::prev(s.end()) برای دسترسی به بیشترین مقدار استفاده کن. این تمرین برای مفاهیم اولیه بازیسازی (لیدربورد) و برنامهنویسی سیستمها (ردیابی شناسهها/منابع) کاربردی است و توجه کن که درج در set هزینهٔ O(log n) دارد و باید از تکرار عناصر جلوگیری شود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی لیدربورد با std::set، امتیازها را بهطور منظم و بدون تکرار ذخیره میکند. برای یافتن بیشترین امتیاز، ابتدا با empty() بررسی میکنیم که مجموعه خالی نباشد و سپس با std::prev(s.end()) یا --it به آخرین عنصر برسیم. درج امتیاز با set هزینهٔ O(log n) دارد، بنابراین از تکرار جلوگیری کنید تا کارایی حفظ شود. اگر میخواهی سادهتر باشد، میتوان از s.rbegin() استفاده کرد تا مستقیماً به بیشترین مقدار دسترسی پیدا کنی.
گزارش