我正在尝试将两个字符数组row_index
和col_index
相乘,这是我的row_index
和col_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'}
是否有任何明智/有效的方式来完成此类任务? 我不是在寻找代码。如果有人可以向我提供解决此问题的算法,我将不胜感激!
非常感谢! :)
答案 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)。