【发布时间】:2021-09-10 07:21:59
【问题描述】:
我在循环内为测试用例定义了一个空向量变量,在执行每个测试用例后,我希望向量会变空,但它也存储了早期测试用例的先前结果,请帮助谢谢很多。
我的问题陈述是this.,输入为:
输入的第一行包含一个整数 T,表示测试用例的数量。 T测试用例的描述如下。
每个测试用例的第一行包含一个整数 N。
N 行紧随其后。对于每个有效的 i,这些行的第 i 个包含一个字符串 S3,i 后跟一个空格和一个整数 C3,i — 问题代码和正确解决方案的数量 在第三师的第i个问题上。
接下来还有 N 行。对于每个有效的 i,这些行的第 i 行包含一个字符串 S2,I 后跟一个空格和一个整数 C2,i — 问题代码和正确解决方案的数量 关于第二师的第i个问题。
最后,后面还有 N 行。对于每个有效的 i,这些行中的第 i 行包含一个字符串 S1,i 后跟一个空格和一个 整数 C1,i — 问题代码和正确数 第 i 个问题的解。
目标: Codechef 挑战分为三个部分。在一个挑战中,每个部门有 N 个问题,但有些问题可能会在多个部门之间共享。每个问题都由一个代码唯一标识——一个只包含大写英文字母的字符串。每个参赛者只能在其中一个部门提交。
Chef 想要找出所有 3 个部门中每个问题的正确解决方案的总数。给定一个包含 N 个问题代码的列表,其中包含每个分区中每个问题的正确解决方案的数量,找出每个问题的正确解决方案的总数,并将它们按非递减顺序排序。
我的代码以input 为:
3
1
A 1
B 2
C 3
2
AA 1
AB 1
AB 1
AC 1
AC 1
AD 1
1
Z 100
Z 100
Z 100
预期的output 是:
1 2 3
1 1 2 2
300
但我的输出有错误:
1 2 3
1 1 1 2 2 2 3
1 1 1 2 2 2 3 300
我的上述问题的代码是:
#include <iostream>
#include<map>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int main() {
map<string,int>m;
int t,n,c_1;
string s_1;
cin>>t;
for(int i=0;i<t;i++){
cin>>n;
for(int k=0;k<3;k++){
for(int j=0;j<n;j++){
cin>>s_1;
cin>>c_1;
m[s_1]+=c_1;
}
}
vector<int>v;
for(auto x :m){
v.push_back(x.second);
}
sort(v.begin(),v.end());
for(auto y: v){
cout<<y<<" ";
}
cout<<"\n" ;
}
return 0;
}
【问题讨论】:
-
但它存储了早期测试用例的先前结果 -- 最简单的解决方案 -- 创建一个名为
test()的函数并调用该函数,而不是将所有内容都塞进里面的main。那么一切都是test()本地的,不会污染其他测试用例。 -
@Rajakr 神奇的数字 3 在这里做什么 for(int k=0;k
-
@VladfromMoscow sir 3 用于输入 3 次 n,在链接中提到,我也应该写完整的问题吗?
-
@Rajakr 你应该提供一个最小的完整程序来演示这个问题。
-
@VladfromMoscow 我已经编写了完整的代码并添加了问题的输入格式
标签: c++ dictionary vector stl