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循环找到我们的数,然后又通过一个数组来储存答案,发现了中奖个数与数组下标的关系,然后进行储存,最后进行输出。
    
    • 0
      @ 2024-10-11 12:49:20

      学长的方法

      #include <stdio.h>

      int main () {

      int n;

      scanf("%d", &n);

      int a[7];

      int b;

      for (int i = 0; i < 7; i++) {

      scanf("%d", &a[i]);

      }

      int t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0;

      for (int k = 0; k < n; k++) {

      int t0 = 0;

      for (int p = 0; p < 7; p++) {

      scanf("%d", &b);

      for (int q = 0; q < 7; q++) {

      if (b == a[q]) {

      t0++;

      break;

      }

      }

      }

      if (t0 == 7) {

      t1++;

      } else if (t0 == 6) {

      t2++;

      } else if (t0 == 5) {

      t3++;

      } else if (t0 == 4) {

      t4++;

      } else if (t0 == 3) {

      t5++;

      } else if (t0 == 2) {

      t6++;

      } else if (t0 == 1) {

      t7++;

      }

      }

      printf("%d %d %d %d %d %d %d\n", t1, t2, t3, t4, t5, t6, t7);

      return 0;

      }

      • 0
        @ 2024-5-7 19:43:28
        #include <stdio.h>
        int main()
        {
            int times,time;
            scanf("%d",&times);
            int a[9],b,i,j,t,r[9]={0};
            for(i=1;i<=7;i++)scanf("%d",&a[i]);
            for(time=1;time<=times;time++)
            {
                t=0;
                for(i=1;i<=7;i++)
                {
                    scanf("%d",&b);
                    for(j=1;j<=7;j++)
                        if(b==a[j]){t++;break;}
                }
                r[t]++;
            }
            for(i=7;i>=1;i--)printf("%d ",r[i]);
            return 0;
        }//
        
        • @ 2025-1-26 21:58:45

          确实牛的思路

      • 1

      信息

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