3

不是作业什么的,只是个人对编码的兴趣,目前是我自己学习的。在网上发现这个问题很有趣。

想想我们是否有一个数字列表

1 2 2 4 3 6 4 2 5 4

这等于1x^2+2^4+3^6+4^2+5^4 当它们具有相同的指数时如何组合数字?这将成为5x^2+6x^4+3x^6

我认为在这种情况下我们可以使用链表吗?但我真的不知道使用这种数据结构

或者有什么其他方法可以解决这类问题?

首选 C++ 或 Java 中的示例

4

1 回答 1

2

你可以这样做:

#include <iostream>
#include <vector>
#include <map>
 
int main()
{
    std::vector<int> nums{1, 2, 2, 4, 3, 6, 4, 2, 5, 4};
    std::map<int, int> exponent_occurences;
    for (unsigned int i = 1; i < nums.size(); i += 2)
        exponent_occurences[nums.at(i)] += nums.at(i - 1);
    for (auto& [exponent, coef]: exponent_occurences)
        std::cout << coef << "x^" << exponent << std::endl;
    return 0;
}
于 2020-10-09T09:45:24.357 回答