找到两个矩阵之间的重叠

时间:2015-12-08 07:03:06

标签: c++ matrix routes overlap

我们有两个4x4矩阵,每个都有自己的源和目标坐标,我们只能先水平移动然后垂直移动到达目的地(例如,如果你想从(0,0)到(2,3)你可以通过路线(0,0),(0,1),(0,2),(0,3),(1,3),(2,3))。我打印路线没有问题,但我想看到这两个矩阵之间的重叠。你知道我怎么能这样做吗?

以下是显示路线的代码:

#include <iostream>
#include <conio.h> 
#include <stdio.h> 
using namespace std; 
int main() { 
int a[4] = { 0,1,2,3 };
int b[4] = { 0,1,2,3 }; 
int x, y, z, t; cout<<"Enter your source coordination : " ; 
cin>>x>>y; 
cout<<"Enter your destination coordination : " ; 
cin>>z>>t; 
if (x == z&&y == t)  
printf("(%d,%d)",x,y); 
else {
 if (x <= z&&y <= t) { 
for (; a[y] <= t; a[y]++) printf("(%d,%d)",x,a[y]);  
for (; b[x] < z; b[x]++) printf("(%d,%d)",b[x]+1,t); } 
 if (x <= z&&y >= t) {
for (; a[y] >= t; a[y]--) printf("(%d,%d)",x,a[y]); 
 for (; b[x] < z; b[x]++) printf("(%d,%d)",b[x]+1,t); } 
if (x > z&&y > t) { 
for (; a[y] >= t; a[y]--) printf("(%d,%d)",x,a[y]);
 for (; b[x] > z ; b[x]--) printf("(%d,%d)",b[x]-1,t); } 
if (x > z&&y < t) {
 for (; a[y] <= t; a[y]++) printf("(%d,%d)",x,a[y]);
 for (; b[x] > z; b[x]--) printf("(%d,%d)",b[x]-1,t);    
 }
   } 
_getch();

}

1 个答案:

答案 0 :(得分:0)

如果问题涉及int a[4][4]形式的矩阵, 你可以遍历它们并比较它们的元素。然后,如果它们匹配 - 使用相同的索引将它们放在另一个矩阵中。如果它们不匹配 - 您可以简单地将0作为新矩阵的相应元素的值。