3 条题解

  • 0
    @ 2025-1-26 22:38:08
    #include <iostream>
    using namespace std;
    
    const int NUMBERS_PER_TICKET = 7;
    const int NUM_PRIZES = 7;
    
    int main() {
        int n;
        cin >> n;
        int winningNumbers[NUMBERS_PER_TICKET];
        // 读取中奖号码
        for (int i = 0; i < NUMBERS_PER_TICKET; ++i) {
            cin >> winningNumbers[i];
        }
    
        int prizeCounts[NUM_PRIZES] = {0};  // 初始化各奖项中奖张数为 0
    
        // 处理每张彩票
        for (int i = 0; i < n; ++i) {
            int ticketNumbers[NUMBERS_PER_TICKET];
            // 读取当前彩票的号码
            for (int j = 0; j < NUMBERS_PER_TICKET; ++j) {
                cin >> ticketNumbers[j];
            }
    
            int matchCount = 0;  // 记录当前彩票与中奖号码相同的数量
            // 统计相同号码的数量
            for (int j = 0; j < NUMBERS_PER_TICKET; ++j) {
                for (int k = 0; k < NUMBERS_PER_TICKET; ++k) {
                    if (ticketNumbers[j] == winningNumbers[k]) {
                        ++matchCount;
                        break;
                    }
                }
            }
    
            // 根据相同号码的数量确定中奖等级并更新对应奖项的中奖张数
            if (matchCount > 0) {
                prizeCounts[NUM_PRIZES - matchCount]++;
            }
        }
    
        // 输出各奖项的中奖张数
        for (int i = 0; i < NUM_PRIZES; ++i) {
            cout << prizeCounts[i]<<" ";
        }
        cout << endl;
        return 0;
    }
    这个题解是我的思路加上AI给的修改,下面两位学长的方法很好,是对我们输的号码,一个一个进行判断,但我的思路是把所有的号码全部输入完,然后进行两层for循环找到我们的数,然后又通过一个数组来储存答案,发现了中奖个数与数组下标的关系,然后进行储存,最后进行输出。
    

    信息

    ID
    100
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    852
    已通过
    107
    上传者