在C ++中将两个char数组相乘

时间:2019-02-19 06:03:49

标签: c++

我正在尝试将两个字符数组row_indexcol_index相乘,这是我的row_indexcol_index

char row_index[20] = { '1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','J','K','L' };

char col_index[10] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K' };

因此输出为 CString输出[200] = {'A1','B1','C1',...,'KL'}

是否有任何明智/有效的方式来完成此类任务? 我不是在寻找代码。如果有人可以向我提供解决此问题的算法,我将不胜感激!

非常感谢! :)

2 个答案:

答案 0 :(得分:1)

row_index做一个外循环,为col_index做一个内循环,并连接内循环中的值。该算法的伪代码:

r := 0 
while r < number_of_elements_in(row_index):
    c := 0
    while c < number_of_elements_in(col_index):
        output[r*number_of_elements_in(col_index) + c] := contatenate(col_index[c], row_index[r])
        c = c + 1
    r = r + 1

可能的实现如下所示:

#include <iostream>
#include <vector>

int main() {
    std::string row_index = "123456789ABCDEFGHJKL";
    std::string col_index = "ABCDEFGHJK";
    std::vector<std::string> output;

    output.reserve(row_index.size()*col_index.size());

    for(auto r : row_index) {
        for(auto c : col_index) {
            output.emplace_back(std::string() + c + r);
        }
    }

    for(const auto& o : output) // display result
        std::cout << o << "\n";
}

答案 1 :(得分:-2)

您必须使用两个循环将row_index的每个字符附加到col_index。您的结果必须是200个元素,这是数组大小的乘积。考虑到第一个数组的大小为n,第二个数组的大小为m,复杂度为O(n * m)。