2015-12-08 3 views
0

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

} 
+0

Матрицы, которые вы использовали в вашем примере, это 4x1, а не 4x4, как описано в вашем вопросе. Не могли бы вы уточнить, имеют ли ваши матрицы форму 'int x [4]' или 'int x [4] [4]' ??? – silvergasp

ответ

0

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

Смежные вопросы