یک برنامهٔ C++ بنویسید که فهرستی از شناسههای عددی بازیکنان را از ورودی میخواند و با استفاده از std::set::insert فقط شناسههای جدید را نگهدارد و در پایان تعداد و فهرست شناسههای یکتا را به ترتیب صعودی چاپ کند.
10.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:58 0.0
برای حل، از کانتینر std::set در هدر استفاده کنید؛ برای هر شناسه ورودی متد insert را فراخوانی کنید که یک pair برمیگرداند تا بدانید آیا عنصر جدید درج شده است یا قبلاً وجود داشته. در پایان با s.size() تعداد یکتاها را چاپ کرده و با یک حلقه روی مجموعه عناصر را به ترتیب صعودی چاپ کنید. نکات: پیچیدگی درج O(log n) است، میتوانید از ios::sync_with_stdio(false) برای سرعت ورودی/خروجی استفاده کنید و در C++11+ میتوان از structured binding برای خواندن نتیجهٔ insert بهره برد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای اطمینان از تفکیک شناسهها از std::set استفاده کنید تا هم منظم و هم بدون افزونه باشند. تابع insert در C++11 بهصورت pair<iterator,bool> برمیگردد، که با binding میتوانید تشخیص دهید عنصر تازه درج شده است یا قبلاً وجود داشت. برای بهبود کارایی ورودی/خروجی از ios::sync_with_stdio(false) استفاده کنید و نتیجهٔ s.size() را چاپ کنید و با حلقه روی مجموعه، شناسهها را به ترتیب صعودی چاپ کنید. پیچیدگی درج برابر با O(log n) است، که برای ورودیهای نسبتاً بزرگ مناسب است.
گزارش