المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۱۸:برنامه نویسی:سوال ۱۶

زیرمجموعه‌ها

برنامه‌ی زیر برای چاپ تمام زیرمجموعه‌های ‎$k$‎ عضوی مجموعه‌ی ‎$\{1‎, ‎2‎, ‎\dots‎, ‎n\}$‎ نوشته شده است.

تابع writeAllPermutations‎ را با کمک توابع STL در ‎۵‎ خط عادی (بدون چپاندن‎!‎) تکمیل کنید.

دقت کنید که زیر مجموعه‌ها باید به‌ترتیب الفبایی ‎(دیکشنری)‎ مرتب چاپ بشوند و شما مجاز به تغییر جایی از کد به‌جز درون تابع نمی‌باشید.

#include <cstdio>
#include <algorithm>
 
int is[50];
int n, k;
 
void PrintAll() {
  for (int i=0; i<n; i++)
    if (is[i])
      printf("%d ", i+1);
  printf("\n");
}
 
void writeAllPermutations(int n, int k) {
  // implement this function
}
 
int main() {
  scanf("%d %d", &n, &k);
  writeAllPermutations(n, k);  
  return 0;
}

ابزار صفحه