Pat乙级 1058 选择题
生活随笔
收集整理的這篇文章主要介紹了
Pat乙级 1058 选择题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Pat乙級1058 選擇題
- 思路
- 代碼
題目網(wǎng)址
https://pintia.cn/problem-sets/994805260223102976/problems/994805270356541440
思路
注意下輸入的格式,用scanf處理。第1個測試點輸出Too simple前先輸出每個人的分數(shù),然后輸出Too simple,直接return 0。
data二維數(shù)組中,每一行最后一個存那道題的分數(shù),倒數(shù)第二個存正確選項的個數(shù)。
代碼
#include<iostream> #define MAX 1005using namespace std;int data[MAX][MAX] = {0}; int vis[MAX] = {0};int main() {int n;int m;int score;int num;int num_right;char c;int N;int sum = 0;char temp;int flag;scanf("%d %d", &n, &m);for (int i = 1; i <= m; i ++) { scanf("%d %d %d", &score, &num, &num_right);for (int j = 1; j <= num_right; j ++) {scanf(" %c", &c);c = tolower(c);if (c >= 'a' && c <= 'e')data[i][c - 'a' + 1] = 1;}data[i][0] = score; data[i][MAX - 2] = num_right;}for (int i = 1; i <= n; i ++) {scanf("\n");for (int j = 1; j <= m; j ++) {if (j > 1)scanf(" ");scanf("(%d", &N);flag = 0;if (N != data[j][MAX - 2])flag = 1;for (int k = 1; k <= N; k ++) {scanf(" %c", &c);c = tolower(c);if (c >= 'a' && c <= 'e')if (data[j][c - 'a' + 1] <= 0)flag = 1;}scanf(")");if (flag <= 0)data[i][MAX - 1] += data[j][0];else {vis[j] ++;sum ++;}}}for (int i = 1; i <= n; i ++ )cout << data[i][MAX - 1] << endl;if (sum <= 0) {cout << "Too simple";return 0;}int TheMax = -1;int cnt = 0;for (int i = 1; i <= m; i ++) if (vis[i] > TheMax) TheMax = vis[i];cout << TheMax;for (int i = 1; i <= m; i ++) {if (vis[i] == TheMax)cout << " " << i;}return 0; }總結(jié)
以上是生活随笔為你收集整理的Pat乙级 1058 选择题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pat乙级1089 狼人杀-简单版
- 下一篇: Pat乙级 1038 统计同成绩学生