【发布时间】:2020-07-13 12:05:00
【问题描述】:
问题给定两个大小为 N 的未排序数组 A 和大小为 M 的不同元素的 B,任务是从两个数组中找到总和等于 X 的所有对。
**INPUT**
1
5 5 9
1 2 4 5 7
5 6 3 4 8
**EXPECTED OUTPUT** 1 8, 4 5, 5 4
**MY OUTPUT** 1 8, 4 5, 5 4,
我的代码
#include<bits/stdc++.h>
using namespace std;
void Pair(int *a, int*b, int n, int m, int sum) {
map<int, int>mp;
for (int i = 0; i < n; i++) {
int x = a[i];
for (int i = 0; i < m; i++) {
if ((sum - x) == b[i])
mp[x] = b[i];
}
}
for (auto x : mp) {
cout << x.first << " " << x.second << ",";
}
}
int main() {
int test ;
cin >> test;
for (int i = 0; i < test; i++) {
int a[1000000];
int b[1000000];
int n, m, sum;
cin >> n >> m >> sum;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
for (int i = 0; i < m; i++) {
cin >> b[i];
}
Pair(a, b, n, m, sum);
cout << endl;
}
return 0;
}
我已经尝试过 /b/b 但它在这里不起作用我不知道为什么请帮我打印正确的输出并建议我一个更好的方法
我必须删除最后打印的逗号。
【问题讨论】:
-
因此您可以将问题简化为:如何避免在以下循环中打印最后一个逗号?
for (auto x : mp) { cout << x.first << " " << x.second << ","; }