You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++代码无法正确解决出勤达标判断问题,求错误排查

问题分析与修正

错误原因

你的代码逻辑完全偏离了题目要求:

  • 题目核心是判断当前出勤天数 + 剩余工作日全勤后的总天数是否≥90,而你写的cnt >= n-30没有任何逻辑依据,这是导致错误的根本原因。
  • 额外问题:C++标准不支持int a[n]这种变长数组,虽然部分编译器兼容,但建议使用vector<int>或固定大小容器以保证可移植性。

正确解法逻辑

  1. 计算当前已出勤天数cnt;
  2. 计算剩余工作日天数:remaining = 120 - n;
  3. 计算后续全勤后的总出勤天数:total = cnt + remaining;
  4. 若total >= 90则输出YES,否则输出NO。

修正后的代码

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int t;
    cin >> t;

    while (t--) {
        int n;
        cin >> n;
        
        vector<int> a(n);
        int cnt = 0;
        
        for (int i = 0; i < n; i++) {
            cin >> a[i];
            if (a[i] == 1) {
                cnt++;
            }
        }
        
        int total = cnt + (120 - n);
        if (total >= 90) {
            cout << "YES\n";
        } else {
            cout << "NO\n";
        }
    }

    return 0;
}

验证示例

  • 示例1:n=60,当前出勤60天,剩余60天全勤,总出勤120≥90 → YES
  • 示例2:n=120,当前出勤89天,总出勤89<90 → NO
  • 示例3:n=90,当前出勤80天,剩余30天全勤,总出勤110≥90 → YES

内容的提问来源于stack exchange,提问作者Dishant Kumar Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:52:45