Dynamic 相同的输入不同的测试用例不同的答案

Dynamic 相同的输入不同的测试用例不同的答案,dynamic,c++14,Dynamic,C++14,该程序用于确定数组中不等于1的元素数是否小于给定的整数“k”(程序输入)。 该程序接受一个输入't',即测试用例的数量,'n'作为数组中元素的数量,'k'在问题陈述中定义 t->测试用例 我的节目: #include<iostream> using namespace std; int main(){ int t; cin >> t; while(t--){ int n,k; cin >> n >

该程序用于确定数组中不等于1的元素数是否小于给定的整数“k”(程序输入)。 该程序接受一个输入't',即测试用例的数量,'n'作为数组中元素的数量,'k'在问题陈述中定义

t->测试用例

我的节目:

#include<iostream>

using namespace std;

int main(){
    int t;
    cin >> t;
    while(t--){
        int n,k;
        cin >> n >> k;
        int a[n];

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

            cin >> a[i];
            if(a[i]!=1)
                k--;
        }
        if(k>=0)
            cout << "YES" << endl;
        else
            cout << "NO" << endl;

    }
    return 0;
}
#包括
使用名称空间std;
int main(){
int t;
cin>>t;
而(t--){
int n,k;
cin>>n>>k;
int a[n];
for(int i=0;i=0;i++){
cin>>a[i];
如果(a[i]!=1)
k--;
}
如果(k>=0)

cout在您获取输入的循环中,您已经获取了条件“i=0”,即如果k变为小于0(在大于“k”的数字不等于1的情况下),那么它将脱离循环,但随后您给出了完整的数组(对于相同的测试用例)作为输入,但您的程序没有为其已移动的相同测试用例接受输入。不要将k>=0作为循环的中断条件

更正代码:

    #include<iostream>
    using namespace std;
    int main(){
    int t;
    cin >> t;
    while(t--){
        int n,k;
        cin >> n >> k;
        int a[n];

        for(int i=0;i<n;i++){      // change in this line

            cin >> a[i];
            if(a[i]!=1)
                k--;
        }
        if(k>=0)
            cout << "YES" << endl;
        else
            cout << "NO" << endl;

    }
    return 0;
}
#包括
使用名称空间std;
int main(){
int t;
cin>>t;
而(t--){
int n,k;
cin>>n>>k;
int a[n];
对于(int i=0;i>a[i];
如果(a[i]!=1)
k--;
}
如果(k>=0)

回答问题并澄清“测试用例”的含义。此处没有测试代码,因此您需要明确您正在尝试的内容和期望的内容。您通常不会读取每个测试的所有
n
元素。您可能会将上一个测试的剩余元素误认为下一个测试的开始。特别是,在导致
no
答案的测试后,未来的读取将关闭。而ks@IGORTANDETNIK编辑了这个问题@jdv谢谢你告诉我需要帮助!!@user9440672如果答案有帮助,我会请你投票并点击旁边的复选标记,将其标记为有用的答案。声誉不够