首页 / 客观题库

70020 - 2025CSP-J 完善程序2

题目(材料题)

(2)精明与糊涂

有N个人,分为两类:
① 精明人:永远能正确判断其他人是精明还是糊涂;
② 糊涂人:判断不可靠,会给出随机的判断。

已知精明人严格占据多数,即如果精明人有$k$个,则满足$k>N/2$。你只能通过函数query(i,j)让第$i$个人判断第$j$个人:返回true表示判断结果为“精明人”;返回false表示判断结果为“糊涂人"。目标是通过互相判断,找出至少一个百分之百能确定的精明人(无需关心query(i,j)的内部实现)。

以下程序利用”精明人占多数”的优势,通过“消除”过程让人们互相判断并抵消,经过若干轮抵消后,最终留下的候选者必然属于多数派(精明人),试补全程序。

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 int N;
 5 bool query(int i, int j);
 6 
 7 int main() {
 8     cin >> N;
 9     int candidate = 0;
10     int count = ①;
11     for (int i = 1; i < N; ++i) {
12         if ( ②) {
13             candidate = i;
14             count = 1;
15         } else {
16             ③ {
17                 ④;
18             } else {
19                 count++;
20             }
21         }
22     }
23     cout << ⑤ << endl;
24     return 0;
25 }

||
( 单选 )

① 处应填(    )。

A 0

B 1

C N

D -1

( 单选 )

② 处应填(    )。

A count < 0

B count == 1

C count == 0

D query(candidate,i) == false

( 单选 )

③ 处应填(    )。

A query(candidate,i) == false

B query(i,candidate) == true

C query(candidate,i) == false && query(i,candidate) == false

D query(candidate,i) == false || query(i,candidate) == false

( 单选 )

④ 处应填(    )。

A count–

B break

C count++

D candidate = i

( 单选 )

⑤ 处应填(    )。

A N-1

B count

C candidate

D 0

意见反馈

    最多上传3张图片,格式为JPG、PNG、JPEG,单张不超过5MB

    注册

    发送验证码

    密码必须包含数字、字母和特殊字符

    找回密码

    发送验证码

    密码必须包含数字、字母和特殊字符

    运行 ID:67149

    • 测试点1:Accepted
    • 用时:0 ms
    • 内存:288 kb
    • 测试点2:Accepted
    • 用时:0 ms
    • 内存:288 kb
    输入
    203
    输出
    203

    test

    测评信息

    错误.in文件下载

    错误.out文件下载

    运行 ID:67149

    2019-01-24 15:06:36