یک برنامهٔ 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 بهره برد.

توسط پژوهشگر در 201 روز قبل ساعت 03:58
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arash در 201 روز قبل ساعت 04:32

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

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری