测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

PROBLEM SET

题库

按难度与知识点筛选,找到适合的练习题。

共 67434 题
重置

题目列表

共 67434 题
A27049 在C++中, int arr[3][4] 和 int* arr = new int[12] 均可模拟一个3行4列的二维数组。关于这两种方式,下面说法错误的是( )。 C-L4 -- 较难 -- A27050 下面的函数接收一个 行 列的二维数组并输出其中元素,则横线上不能填写( )。void printArray(________) { for (int i = 0; i < 3; ++i) for (int j = 0; j < 4; ++j) std::cout << arr[i][j] << " "; } C-L4 -- 较难 -- A27051 在C++中,声明一个指向整型变量的指针的正确语法是( )。 C-L4 -- 较难 -- A27054 如下为线性筛法,用于高效生成素数表,其核心思想是每个合数只被它的最小质因数筛掉一次,时间复杂度为O(n)。( )vector<int>linearsieve(int n){ vector<bool>is prime(n +1,true); vector<int>primes; for(inti=2;i<= n; ++i){ if(is_prime[i]){ primes.push back(i)… C-L5 -- 困难 -- A27055 函数 puzzle 定义如下,则调用 puzzle(7) 程序会⽆限递归。( )int puzzle(int n){ if(n ==1)return 1; if(n%2==0)return puzzle(n/ 2); return puzzle(3*n+ 1); } C-L5 -- 困难 -- A27056 分治算法将原问题可以分解成规模更小的子问题,使得求解问题的难度降低。但由于分治算法需要将问题进行分解,并且需要将多个子问题的解合并为原问题的解,所以分治算法的效率通常比直接求解原问题的效率低。( ) C-L5 -- 困难 -- A27057 求解下图中A点到D点最短路径,其中A到B之间的12可以理解为距离。求解这样的问题常用Dijkstra算法,其思路是通过逐步选择当前距离起点最近的节点来求解非负权重图(如距离不能为负值)单源最短路径的算法。从该算法的描述可以看出,Dijkstra算法是贪心算法。( ) C-L5 -- 困难 -- A27058 查字典这个小学生必备技能,可以把字典视为一个已排序的数组。假设小杨要查找一个音首字母为 g 的单词,他首先翻到字典约一半的页数,发现该页的首字母是 m ,由于字母表中 g 位于 m 之前,所以排除字典后半部分,查找范围缩小到前半部分;不断重复上述步骤,直至找到首字母为 g 的页码。这种查字典的一系列操作可看作二分查找。( ) C-L5 -- 困难 -- A27059 归并排序的最好、最坏和平均时间复杂度均为O(n log n)。( ) C-L5 -- 困难 -- A27060 下面的C++代码实现归并排序。代码在执行时,将输出一次 HERE 字符串,因为merge()函数仅被调用一次。( )void merge(std::vector<int>& arr, int left, int mid, int right){ std::vector<int>temp(right-left+1); int i= left; int j= mid + 1; int k =0; w… C-L5 -- 困难 -- A27061 下面的C++代码用于输出每个数对应的质因数列表,输出形如: {5: [5], 6: [2, 3], 7: [7], 8: [2, 2,]}。( )int main(){ int n, m; cin >>n >> m; if(n >m)swap(n,m); map<int, vector<int>> prime factor; for(int i=n;i<= m; ++i){ int j=2,k=… C-L5 -- 困难 -- A27062 假设函数 gcd() 函数能正确求两个正整数的最大公约数,则下面的 lcm() 函数能求相应两数的最小公倍数。( )int lcm(int a, int b){ return a*b/gcd(a, b); } C-L5 -- 困难 -- A27063 下面C++代码是用欧几里得算法(辗转相除法)求两个正整数的最大公约数, a 大于 b 还是小于 b 都适用。( )int gcd(int a, int b){ while(b){ int temp = b; b=a% b; a = temp; } return a; } C-L5 -- 困难 -- A27064 小杨编写了一个如下的高精度除法函数,则横线上应填写的代码为( )。const int MAXN =1005://最大位数 struct BigInt { int d[MAXN];// 存储数字,d[0]是个位,d[1]是十位,... int len;// 数字长度 BigInt(){ memset(d,0,sizeof(d)); len = 0; } }; //比较两个高精度数的大小 int c… C-L5 -- 困难 -- A27065 关于下述C++代码的快速排序算法,说法错误的是( )。int randomPartition(std::vector<int>& arr, int low, int high){ int random=low+rand()%(high-low+1); std::swap(arr[random],arr[high]); int pivot = arr[high]; int i=low-1; for… C-L5 -- 困难 -- A27066 题 13.硬币找零问题中要求找给客户最少的硬币。 coins 存储可用硬币规格,单位为角,假设规格都小于10 角,且一定有1角规格。 amount 为要找零的金额,约定必须为1角的整数倍。输出为每种规格及其数量,按规格从大到小输出,如果某种规格不必要,则输出为0。下面是其实现代码,相关说法正确的是( )。const int MAX_COINS = 10; int result[MAX _COIN… C-L5 -- 困难 -- A27067 有关下面C++代码的说法,错误的是( )。double sqrt binary(long longn, double epsilon = 1e-10){ if(n< 0){ throw invalid argument("输入必须为非负整数”); } if(n==0n==1)return n; // 阶段 1 long long low=1,high = n; long long k=0; wh… C-L5 -- 困难 -- A27068 下面的C++ 代码用于在升序数组 lst 中查找⽬标值 target 最后一次出现的位置。相关说法,正确的是( )。int binary_search last occurrence(const vector<int>& lst, int target){ if(lst.empty())return -1; int low=0,high=lst.size()-1; while(low< high… C-L5 -- 困难 -- A27069 下面的C++代码,用于求一系列数据中的最大值。有关其算法说法错误的是( )。int find max(const vector<int>& nums){ if(nums.empty()){ throw invalid_argument("输入数组不能为空"); } int max value = nums[0]; for(int num :nums){ if(num>max_value){ ma… C-L5 -- 困难 -- A27070 下面的C++代码,用于求一系列数据中的最大值。有关其算法说法错误的是( )。int find max recursive(const vector<int>& nums, int left, int right){ if(left == right) return nums[left]; int mid=left+(right-left)/2; int left_max=find max rec… C-L5 -- 困难 --