PAT-B 1058 選擇題 【模擬】
PAT-B 1058 選擇題
https://pintia.cn/problem-sets/994805260223102976/problems/994805270356541440
題目
批改多選題是比較麻煩的事情,本題就請你寫個程式幫助老師批改多選題,並且指出哪道題錯的人最多。
輸入
輸入在第一行給出兩個正整數 N(≤ 1000)和 M(≤ 100),分別是學生人數和多選題的個數。隨後 M 行,每行順次給出一道題的滿分值(不超過 5 的正整數)、選項個數(不少於 2 且不超過 5 的正整數)、正確選項個數(不超過選項個數的正整數)、所有正確選項。注意每題的選項從小寫英文字母 a 開始順次排列。各項間以 1 個空格分隔。最後 N 行,每行給出一個學生的答題情況,其每題答案格式為 (選中的選項個數 選項1 ……)
,按題目順序給出。注意:題目保證學生的答題情況是合法的,即不存在選中的選項數超過實際選項數的情況。
輸出
按照輸入的順序給出每個學生的得分,每個分數佔一行。注意判題時只有選擇全部正確才能得到該題的分數。最後一行輸出錯得最多的題目的錯誤次數和編號(題目按照輸入的順序從 1 開始編號)。如果有並列,則按編號遞增順序輸出。數字間用空格分隔,行首尾不得有多餘空格。如果所有題目都沒有人錯,則在最後一行輸出 Too simple
。
樣例輸入
3 4
3 4 2 a c
2 5 1 b
5 3 2 b c
1 5 4 a b d e
(2 a c) (2 b d) (2 a c) (3 a b e)
(2 a c) (1 b) (2 a b) (4 a b d e)
(2 b d) (1 e) (2 b c) (4 a b c d)
樣例輸出
3
6
5
2 2 3 4
分析
模擬題,具體細節看程式,註釋很詳細。
C++程式
#include<iostream>
using namespace std;
struct Node{
int score,num,wrong;//答對後的分數;以及選項的個數;打錯的人的數量
char ans[6];//答案
}a[105];
int main()
{
int n,m,tmp;
scanf("%d%d",&n,&m);
//讀入題的資訊
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&a[i].score,&tmp,&a[i].num);
for(int j=0;j<a[i].num;j++)
scanf(" %c",&a[i].ans[j]);
a[i].wrong=0;//回答錯誤的人的數量置為0
}
//處理n個人的答題情況
for(int i=1;i<=n;i++)
{
//第i個人回答第j個問題的情況
int score=0;//第i個人獲得的總分
for(int j=0;j<m;j++)
{
int num;//選項數量
char ans[6];//選擇
scanf(" (%d",&num);
for(int k=0;k<num;k++)
scanf(" %c",&ans[k]);
getchar();//讀取')'
bool flag=true;
if(num!=a[j].num)//選擇的數量和答案的數量不一樣,不對
flag=false;
else
{
for(int k=0;k<num;k++)
{
int t;
for(t=0;t<a[j].num;t++)
if(ans[k]==a[j].ans[t]) break;//第k個選擇是正確的
if(t==a[j].num)
{
flag=false;//第k個選擇是錯誤的
break;
}
}
}
if(flag)//回答第j個問題正確
score+=a[j].score;
else
a[j].wrong++;//此題回答錯誤的人數加一
}
printf("%d\n",score);//輸出第i個人獲得的總分
}
int wrong=0;//統計出現次數最多的題
for(int i=0;i<m;i++)
wrong=max(wrong,a[i].wrong);
if(wrong==0)
printf("Too simple");
else
{
printf("%d",wrong);
for(int i=0;i<m;i++)
if(wrong==a[i].wrong)
printf(" %d",i+1);
}
printf("\n");
return 0;
}
相關文章
- PAT-B 1061 判斷題【模擬】
- PAT-B 1027 列印沙漏 【模擬】
- spectre模擬支援fsdb格式版本選擇
- WebRTC本地選擇codec(web本地模擬)Web
- PAT-B 1067 試密碼【模擬】密碼
- PAT-B 1071 小賭怡情【模擬】
- PAT-B 1054 求平均值 【模擬】
- PAT-B 1072 開學寄語【模擬】
- PAT-B 1081 檢查密碼【模擬】密碼
- PAT-B 1084 外觀數列 【模擬】
- PAT-B 1085 PAT單位排行【模擬】
- PAT-B 1018 錘子剪刀布 【模擬】
- PAT-B 1008 陣列元素迴圈右移問題【簡單模擬】陣列
- PAT-B 1019 數字黑洞【陣列+模擬】陣列
- PAT-B 1017 A除以B【模擬 大數除法】
- PAT-B 1059 C語言競賽【模擬】C語言
- 2024屆新題型數學模擬選題
- PAT-B 1024 科學計數法【模擬+字串】字串
- PAT-B 1077 互評成績計算【模擬】
- PAT-B 1012 數字分類【簡單模擬】
- PAT-B 1025 反轉連結串列【模擬+對映】
- PAT-B 1069 微博轉發抽獎【模擬+集合】
- 模擬題
- 20240724【省選】模擬
- 20240621【省選】模擬
- 業界難題“模擬點選”,端上如何實時防守?
- 測試前奏 之 模擬器環境之Genymotion、Emulator、夜神配置選擇
- 模擬賽雜題
- xcode模擬器不顯示,只可以選擇真機的解決辦法XCode
- 10.31 模擬賽題解
- 2020 ICPC 線上模擬賽 I題 Character Wheels(模擬)
- 模擬select下拉選單詳解
- PAT-B 1001 害死人不償命的(3n+1)猜想【模擬】
- 【爬坑日記】.class.class選擇器的選擇問題
- 2024省選OIFC模擬T1
- 迴圈點選連結selenium模擬
- 模切企業選擇ERP要注意那些?
- Day41--練習--選擇題錯題