Нахождение перекрытия между двумя матрицами

У нас есть две матрицы 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 ответ

Если вопрос касается матриц вида int a[4][4]Вы можете просмотреть их и сравнить их элементы. Затем, если они совпадают - поместите их в другую матрицу, используя те же индексы. Если они не совпадают - вы можете просто поместить 0 в качестве значения для соответствующего элемента новой матрицы.

Другие вопросы по тегам