PROBLEM SET
题库
按难度与知识点筛选,找到适合的练习题。
题目列表
共 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
困难
--