更小的大等号 PrepBuddy有N个篮子,每个篮子包含一个水果,每个篮子都有一些品质因子(第一个篮子有Ai质量因子),Tina有一个篮子,一个水果具有质量因子K。她想知道有多少PrepBuddy的篮子的质量因子比K低(L),有多少篮子的质量因子比K多(M),有多少篮子的质量因子与K相等。
输入格式第一行包含一个整数T,表示测试用例的数目。T测试用例如下:第一行包含两个空格分隔的整数N和K.The第二行包含N个空格分隔整数,表示篮子的质量因数。
在新行上输出每个测试用例的格式,打印三个空格分隔的整数,表示L、M和E的值。
约束1<=T<=100
1<=N,K<=10^5
−10^6<=Ai<=10^6
任何测试用例文件上的所有N的总和不超过5∗10^6
时间限制1秒
示例输入
2
5 2
-1 0 -3 1 2
5 3
1 -1 -5 2 4
输出
4 0 1
4 1 0
在第一个测试用例中,K=2,质量因子小于K的篮子是1,2,3,4,没有一个篮子的质量因子大于K,还有一个篮子5的质量因子等于K。
我的解决方案
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
ll n, k;
cin >> n >> k;
ll arr[n];
for (ll i = 0; i < n; i++) {
cin >> arr[i];
}
int less = 0, more = 0, equal = 0;
for (ll i = 0; i < n; i++) {
if (arr[i] < k) {
less++;
} else if (arr[i] > k) {
more++;
} else {
equal++;
}
cout << less << " " << more << " " << equal << " ";
}
cout << endl;
}
return 0;
}投入2
5 2
-1 0 -3 1 2
5 3
1 -1 -5 2 4
输出1 0 0 2 0 0 3 0 0 0 4 0 0 1
1 0 0 2 0 0 3 0 0 4 0 4 1 0
为什么我要得到更多的数字,比如1 0 0 2 0 0 0 3 0 0 0和我的answer.How来纠正这个问题呢?请帮帮忙
发布于 2020-10-14 16:14:03
代码中的错误非常简单,易于调试。每次打印输出时,都要通过数组运行,从而获得所有这些额外的打印。
如何使调试变得容易?重新组织代码,使其更具可读性,使其成为可能。实际上,修正是在移动线:
cout<<less<<" "<<more<<" "<<equal<<" ";比原来低了两条线。为了演示它,下面是代码固定的和有组织的
#include <iostream>
#include <vector>
#include <cstdint>
int main()
{
int t;
std::cin >> t;
while(t--)
{
std::int64_t n,k;
std::cin >> n >> k;
std::vector<int> vec{n};
for(std::size_t i = 0; i < n; ++i)
{
std::cin >> vec[i];
}
int less=0, more=0, equal=0;
for (std::size_t i = 0; i < n; i++)
{
if (vec[i] < k)
{
less++;
}
else if (vec[i] > k)
{
more++;
}
else
{
equal++;
}
// The next output line was here, under the for loop!!!
}
std::cout << less << " " << more<< " " << equal << " "; // this is its place!
std::cout << std::endl;
}
return 0;
}我只作了3项修改:
#include <bit/stdc++.h>.
using namespace std;和代码--每个新作用域都有自己的缩进级别,显示哪个命令在哪个作用域中运行,向每个事物显示mistake.arr[n]中的动态数组,因此,您需要使用std::vector。此外,在cstdint中有固定的大小长度,您应该使用这些长度来确保您使用的类型是正确的。此外,如果可能,更喜欢使用unsigned值,例如,在索引时,可以使用std::size_t、std::uint32_t或std::size_t。发布于 2021-05-15 13:48:31
这段代码对我来说很好
#include <bits/stdc++.h>
using namespace std;
int main()
{
int T,N,K,arr[N];
cin>>T;
while(T--)
{
cin>>N;
cin>>K;
for(int i=0;i<N;i++)
{
cin>>arr[i];
}
int L=0,M=0,E=0;
for(int i=0;i<N;i++)
{
if(arr[i]<K){
L++;
}
else if(arr[i]>K)
{
M++;
}
else{
E++;
}
}
cout<<L<<" "<<M<<" "<<E<<endl;
}
return 0;
}https://stackoverflow.com/questions/64356672
复制相似问题