یک برنامه به زبان C++ بنویسید که یک ماتریس عددی NxN از نوع double را از ورودی بخواند و در هر سطر عنصر بزرگترین و کوچکترین را با استفاده از std::swap جابجا کند و سپس ماتریس حاصل را چاپ کند.
14.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 01:35 0.0
ماتریس را با std::vector> نگه دارید، برای هر سطر با یک پیمایش اندیسهای min و max را پیدا کنید و با استفاده از std::swap (در هدر ) عناصر را جابجا کنید. به خاطر مقیاسهای بزرگ در محاسبات عددی و HPC از double استفاده کنید و برای سرعت I/O میتوانید ios::sync_with_stdio(false) و cin.tie(nullptr) را فعال کنید؛ در پیادهسازی به پیچیدگی زمانی O(N^2) و جلوگیری از کپیهای غیرضروری توجه کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی، بهتر است از std::vector<std::vector<double>> با reserve و اندازهدهی اولیه استفاده کنید تا از تخصیصهای مکرر جلوگیری شود. برای یافتن اندیسهای min و max در هر سطر میتوانید از پیمایش دستی یا توابع std::minmax_element استفاده کنید و سپس با std::swap مقادیر را جابجا کنید؛ اگر min و max یکسان یا در یک اندیس باشند نیازی به swap نیست. حتما ios::sync_with_stdio(false) و cin.tie(nullptr) را فعال کنید تا I/O سریع شود و از پاس دادن مقادیر بهصورت ارجاع جلوگیری کنید تا کپیهای غیرضروری نداشته باشید. پیچیدگی زمانی کلی O(N^2) خواهد بود و بهتر است برای مقدارهای NaN یا مقیاسهای بسیار بزرگ چکهای لازم را لحاظ کنید.
گزارش