您好,欢迎访问一九零五行业门户网

在一个扩展矩阵中,返回C++中的前一个元素

基于扩展矩阵讨论一个问题。扩展矩阵是尺寸按某个因子不断增加的矩阵。
这里我们有一个字符矩阵,其尺寸按2的倍数扩展,即如果原始矩阵的尺寸是n * n,那么扩展后的矩阵尺寸变为2n * 2n。我们给出了一个字符序列位于 (i, j) 处,我们需要返回位于 (i, (j - n - 1)%n) 处的字符序列。
让我们通过可视化一些初始扩展矩阵来理解。
given matrix -> [ a, b ] [ c, d ], 2 x 2 matrixmultiplying with { a, b, c, d }a x [ a, b ]b x [ a, b ]c x [ a, b ]d x [ a, b ][ c, d ] [ c, d ] [ c, d ] [ c, d ]expanded matrix -> [ aa, ab, ba, bb ][ ac, ad, bc, bd ][ ca, cb, da, db ][ cc, cd, dc, dd ], 4x4 matrixto expand again, multiply it by { a, b, c, d } and a matrix of size 8x8 will be formed.expanded matrix - > [ aaa, aab, aba, abb, baa, bab, bba, bbb ][ aac, aad, abc, abd, bac, bad, bbc, bbd ][ aca, acb, ada, adb, bca, bcb, bda, bdb ][ acc, acd, adc, add, bcc, bcd, bdc, bdd ][ caa, cab, cba, cbb, daa, dab, dba, dbb ][ cac, cad, cbc, cbd, dac, dad, dbc, dbd ][ cca, ccb, cda, cdb, dca, dcb, dda, ddb ][ ccc, ccd, cdc, cdd, dcc, dcd, ddc, ddd ]
这是两个初始扩展矩阵;假设我们得到了一个字符序列“bcc”,那么我们需要返回刚刚剩下的序列,即“add”。另外,假设矩阵是循环的,即如果给定序列位于 (i, 0),则返回 (i, n-1) 处的序列
input: abboutput: abaexplanation: the sequence just left to abb is aba in the 8x8 matrix.input: aadcoutput: aacdinput: abbcdoutput: abbcc
寻找解决方案的方法首先考虑问题,想到的唯一解决方案是找到包含给定序列但看起来不是很复杂的扩展矩阵。我们需要首先形成矩阵,然后搜索序列。
高效方法在查看了一些最初扩展的矩阵之后,我们发现了一种模式,通过该模式我们可以看到前一个元素。即
从最后一个索引开始遍历字符序列。
如果索引元素是 ' b'或'd',然后将其更改为'a'或'c'并停止遍历数组。
如果索引元素为'a'或'c', ' 将其更改为 'b' 或 'd' 并移至下一个索引并检查它。
示例c++ 代码上述方法
#include <bits/stdc++.h>using namespace std;int main (){ string seq = "abbcd"; int n = seq.length (); // traverse through the string from last. for (int i = n; i >= 0; i--){ // if the element is b or d, change them and stop traversing. if (seq[i] == 'b'){ seq[i] = 'a'; break; } if (seq[i] == 'd'){ seq[i] = 'c'; break; } // if an element is b or d, change them and move to the next element. if (seq[i] == 'a') seq[i] = 'b'; else if (seq[i] == 'c') seq[i] = 'd'; } cout << "the previous sequence is: " << seq; return 0;}
输出the previous sequence is: abbcc
结论在本文中,我们讨论了扩展字符矩阵及其形成方式。我们还讨论了在扩展矩阵中查找前一个元素的问题。我们通过理解扩展字符矩阵创建的模式解决了这个问题。
我们还讨论了解决这个问题的 c++ 代码,我们可以用任何编程语言(如 c、java、python 等)编写这些代码。我们希望您会发现本教程很有帮助。
以上就是在一个扩展矩阵中,返回c++中的前一个元素的详细内容。
其它类似信息

推荐信息