要记得把数组开到最大。1005,2005.
#include<iostream>
#include <stdlib.h>
using namespace std;
int main() {
int k, n;
double aN, ans[2005] = { 0.0 }, arr[1005] = {0.0};
cin >> k;
for (int i = 0; i < k; i++) {
cin >> n >> aN;
arr[n] += aN;
}
cin >> k;
for (int i = 0; i < k; i++) {
cin >> n >> aN;
for (int j = 0; j < 1005; j++) {
if (arr[j] != 0) ans[j + n] += arr[j] * aN;
}
}
int cnt = 0;
for (int i = 0; i < 2005; i++) {
if (ans[i] != 0.0) cnt++;
}
cout << cnt;
for (int i = 2000; i >= 0; i--)
if (ans[i] != 0.0)
printf(" %d %.1f", i, ans[i]);
cout << endl;
return 0;
system("pause");
}
本文介绍了一个使用C++实现的数组操作算法,通过两个数组的运算展示数据处理过程。算法首先读取两个整数k和n,然后根据输入更新数组arr的元素。接着再次读取k和n,对arr数组进行操作并将结果存入ans数组中。最后,统计并输出ans数组中非零元素的数量及具体值。
&spm=1001.2101.3001.5002&articleId=83049973&d=1&t=3&u=dc4ed90c750a4507bca0a25a7ff6e948)
192

被折叠的 条评论
为什么被折叠?



