
基于扩展矩阵讨论一个问题。扩展矩阵是尺寸按某个因子不断增加的矩阵。
这里我们有一个字符矩阵,其尺寸按2的倍数扩展,即如果原始矩阵的尺寸是N * N,那么扩展后的矩阵尺寸变为2N * 2N。我们给出了一个字符序列位于 (i, j) 处,我们需要返回位于 (i, (j - N - 1)%N) 处的字符序列。
让我们通过可视化一些初始扩展矩阵来理解。
Given Matrix -> [ a, b ] [ c, d ], 2 X 2 matrix
Multiplying 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 matrix
To 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) 处的序列
立即学习“C++免费学习笔记(深入)”;
Input: abb Output: aba Explanation: The sequence just left to abb is aba in the 8X8 matrix. Input: aadc Output: aacd Input: abbcd Output: abbcc
寻找解决方案的方法
首先考虑问题,想到的唯一解决方案是找到包含给定序列但看起来不是很复杂的扩展矩阵。我们需要首先形成矩阵,然后搜索序列。
高效方法
在查看了一些最初扩展的矩阵之后,我们发现了一种模式,通过该模式我们可以看到前一个元素。即
函数是一组语句一起执行任务。在MATLAB中,函数定义在单独的文件。文件函数的文件名应该是相同的。 函数操作在自己的工作空间,它也被称为本地工作区,独立的工作区,在 MATLAB 命令提示符访问,这就是所谓的基础工作区的变量。函数可以接受多个输入参数和可能返回多个输出参数 。 MATLAB是MathWorks公司开发的一种编程语言。它最初是一个矩阵的编程语言,使线性代数编程很简单。它可以运行在交互式会话和作为批处理作业。有需要的朋友可以下载看看
从最后一个索引开始遍历字符序列。
如果索引元素是 ' b'或'd',然后将其更改为'a'或'c'并停止遍历数组。
如果索引元素为'a'或'c', ' 将其更改为 'b' 或 'd' 并移至下一个索引并检查它。
示例
C++ 代码上述方法
#includeusing 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 等)编写这些代码。我们希望您会发现本教程很有帮助。










