题目信息

题目类型
提高级
题目年份
2020
题目题型
判断题
关 键 词
数值范围

题目题干

第22题
  1. #include <iostream> 
  2. #include <cstdlib> 
  3. using namespace std; 
  4.   
  5. int n; 
  6. int d[10000]; 
  7.   
  8. int find(int L, int R, int k) { 
  9.     int x = rand() % (R - L + 1) + L; 
  10.     swap(d[L], d[x]); 
  11.     int a = L + 1, b = R; 
  12.     while (a < b) { 
  13.         while (a < b && d[a] < d[L]) 
  14.             ++a; 
  15.         while (a < b && d[b] >= d[L]) 
  16.             --b; 
  17.         swap(d[a], d[b]); 
  18.     } 
  19.     if (d[a] < d[L]) 
  20.         ++a; 
  21.     if (a - L == k) 
  22.         return d[L]; 
  23.     if (a - L < k) 
  24.         return find(a, R, k - (a - L)); 
  25.     return find(L + 1, a - 1, k); 
  26.   
  27. int main() { 
  28.     int k; 
  29.     cin >> n; 
  30.     cin >> k; 
  31.     for (int i = 0; i < n; ++i) 
  32.         cin >> d[i]; 
  33.     cout << find(0, n - 1, k); 
  34.     return 0; 

假设输入的 n,k 和 d[i] 都是不超过 10000 的正整数,且 k 不超过 n,并假设 rand() 函数产生的是均匀的随机数。NlC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

1)判断:第 9 行的“x”的数值范围是 L+1到 R,即 [L+1, R]。( )NlC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

NlC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
NlC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
NlC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
NlC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
NlC100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
 

答案解析

相关题目

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!
  • 温馨提示:本文属于积分文章,需要充值获得积分或升级VIP会员,也可在会员中心投稿获取。

猜你喜欢