程序将找出数组中不等于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;
}
我的输入:
6
2 2
1 2
5 6
1 2 2 2 2
5 3
2 2 10 1 1
5 3
3 5 6 4 1
5 3
3 5 6 4 1
5 3
3 5 4 4 1
输出:
是
是
是
否
是
是
问题:在第4和第5个测试用例中,输出是不同的。
我能理解的问题是,仅在第5个测试用例中,对于给定的第5个情况,循环仅针对i = 0运行,然后中断。
答案 0 :(得分:0)
在您进行输入的循环中,您已满足条件'i
更正的代码:
#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;
}