编了道阅读程序题,求志愿者审题。 答案和问题发在评论区即可。
0 #include<iostream>
1 using namespace std;
2
3 int fun(int arr[], int len) {
4 int sum=0;
5 for (int i = 1; i < len; ++i) {
6 int key = arr[i];
7 int j = i - 1;
8 while (j >= 0 && arr[j] > key) {
9 arr[j + 1] = arr[j];
10 sum+=arr[j];
11 j--;
12 }
13 arr[j + 1] = key;
14 }
15 return sum;
16 }
17
18 int main() {
19 freopen("file.in","r",stdin);
20 int arr[1000];
21 int input;
22 int len;
23 cin>>len;
24 len=(len%1000+1000)%1000;
25 for(int i=0; i<len; i++) {
26 cin>>input;
27 arr[i]=(input%10000+10000)%10000;
28 }
29 cout<<fun(arr,len)<<endl;
30 return 0;
31 }
(1)在执行过 29 行代码后,arr数组变为升序。
(2)本程序的时间复杂度是 O(n2) 。
(3)第 24 行的作用是将len的范围限定在 [0,999] 之间。
(4)本题 fun()中的 sum 可能会溢出,需要改成unsigned int 类型。
(5)输入 4 1 2 4 3 的结果为( )
A. 2
B. 3
C. 4
D. 7
(6)输入 6 6 5 4 3 2 1 的结果为( )
A. 0
B. 21
C. 70
D. 91