求解一算法有关问题
求解一算法问题!
小弟刚刚毕业,遇一问题而不得解答,望求高人相助,问题如下:
有一个大小M*N的矩阵X(M,N的值均大于等于2),问怎样才能求出包含在该矩阵中的矩阵数有多少?怎样又能求出X中特定大小的矩阵数为多少?(即存在大小为A*B矩阵Y,A<=M,B<=N,求X中包含的Y矩阵数为多少?行向量及列向量不予考虑)
实例:一个3*3的矩阵,其中的包含矩阵数为9,因为其中2*2的矩阵有4个,2*3或3*2的矩阵共有4个,3*3的矩阵有1个,所以一共是9个。对于一定阶数M不等于N的情况,矩阵X中的A*B矩阵和B*A矩阵的数量是不一样的。
望高手能不吝给出算法,此前网上应有类似问题,在下愚钝,未能知晓,特发此贴,待谢鸿恩!
------解决方案--------------------
算法不是很懂。。
不过你帖子最好法在C/C++大板,这个小板不是很好找。
------解决方案--------------------
好像是递归吧!
------解决方案--------------------
小弟刚刚毕业,遇一问题而不得解答,望求高人相助,问题如下:
有一个大小M*N的矩阵X(M,N的值均大于等于2),问怎样才能求出包含在该矩阵中的矩阵数有多少?怎样又能求出X中特定大小的矩阵数为多少?(即存在大小为A*B矩阵Y,A<=M,B<=N,求X中包含的Y矩阵数为多少?行向量及列向量不予考虑)
实例:一个3*3的矩阵,其中的包含矩阵数为9,因为其中2*2的矩阵有4个,2*3或3*2的矩阵共有4个,3*3的矩阵有1个,所以一共是9个。对于一定阶数M不等于N的情况,矩阵X中的A*B矩阵和B*A矩阵的数量是不一样的。
望高手能不吝给出算法,此前网上应有类似问题,在下愚钝,未能知晓,特发此贴,待谢鸿恩!
------解决方案--------------------
算法不是很懂。。
不过你帖子最好法在C/C++大板,这个小板不是很好找。
------解决方案--------------------
好像是递归吧!
------解决方案--------------------
- C/C++ code
int FindMatrix(int iM, int iN, int iCurM, int iCurN) { return (iM - iCurM + 1) * (iN - iCurN + 1); } int _tmain(int argc, _TCHAR* argv[]) { int iM = 3; int iN = 3; int iAllMatrix = 0; for (int i = 2; i <= iM; i++) { for (int j = 2; j <= iN; j++) { iAllMatrix += FindMatrix(iM, iN, i, j); } } cout << "总矩阵数目: " << iAllMatrix << endl; int iCurM = 2; int iCurN = 2; int iNumMatrix = FindMatrix(iM, iN, iCurM, iCurN); cout << "当前矩阵数目: " << iNumMatrix << endl; getchar(); return 0; }
------解决方案--------------------
------解决方案--------------------