P9095 [PA2020] Wybór zadań 题解

· · 题解

思路

输入 n 个字符串,将字符串的两项转为数字并存入一个二维数组。

定义一个二维数组存储每种题目的数量,每次输入后找到对应的项加上一。最后扫一

遍这个二维数组。扫描的时候要注意一下有 3 种题目要出现 2 次才可以。

详细思路请见代码。

Code:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
int a[10][10];//第一项表示比赛编号,第二项表示题目编号
string s;//输入的题号,不用再说
int n;
bool flag;//如果有空的项,就让flag=1,如果flag=1,输出NIE,否则输出TAK
int main(){
    cin>>n;
    if(n<18){
        cout<<"NIE";
        return 0;//如果n比18小,直接结束程序
    }
    for(int i=1;i<=n;i++){
        cin>>s;
        int sum=s[1]-64;//这里将字母转为数字,A转为1,B转为2,C转为3
        a[s[0]-'0'][sum]++;//s[0]-'0'->字符转数字
    }
    for(int i=1;i<=4;i++){//先判断前4次
        for(int j=1;j<=3;j++){
            if(a[i][j]<1) flag=1;//如果发现空的项,就让flag=1
        }
    }
    if(a[5][1]<2||a[5][2]<2||a[5][3]<2) flag=1;//第五场比赛单独判断
    if(flag==0) cout<<"TAK";//判断flag是否为1
    else cout<<"NIE";
    return 0;
}

感谢观看!

AC记录,供参考

$2023.3.12$ : 添加 $LaTeX$ 公式/英文与汉字之间的空格以及句号,并细化思路。 最后感谢审核员提出的建议。