Задача обратного хода подсчитайте квадрат
Я хочу подсчитать все квадраты и прямоугольники между координатами с помощью алгоритма обратного отслеживания, и мне нужна помощь, чтобы завершить мой код, чтобы сделать это
Стол будет похож на :
если я введу точки (1,1),(1,2),(2,1),(2,2),(3,1),(3,2),(5,2),(3,3)..
___1 2 3 4 5 6 7 1 * * * 0 0 0 0 2 * * * 0 * 0 0 3 * * * 0 0 0 0
Здесь предполагается: количество квадратов=2 "первый образован точками (1,1)&(1,2)&(2,1)&(2,2), второй-точками (1,1)& (3,1)& (1,3)& (3,3) "
и прямоугольник=1 " это (1,1)& (3,1)& (1,2)& (3,2)
Что я уже пробовал:
#include <iostream> #include <iomanip> #include <utility> #include <vector> #include <iterator> using namespace std; const size_t size=20; char table[size][size]; void table_clear(void){ for(int v = 0; v<size; ++v) for(int h = 0; h<size; ++h) table[v][h]=' '; } void table_put(pair<int, int> p){ int v = p.first; int h = p.second; table[v-1][h-1] = '*';//to zero origin } void table_disp(){ cout << "***"; for(int i=0; i<size;++i){ cout << setw(3) << i + 1; } cout << "\n" << endl; for(int i=0;i<size;++i,cout<<endl){ cout << setw(3) << left << i + 1; for(int j=0;j<size;++j){ cout << setw(3) << right << table[i][j]; } cout<<endl; } } int main(){ vector<pair<int,int> > v; pair<int, int> end(99,99); pair<int, int> XY; cout << "Enter each cell in first colony use row space column Enter format, 3 4, for example.\n"; cout << "Enter 99 99 to end entries." << endl; while(1){ int x,y; cin >> y; cin >> x; XY = make_pair(x,y); if(XY == end) break; v.push_back(XY); } cout<<"\n\n"; table_clear(); for(vector<pair<int,int> >::const_iterator iter = v.begin();iter != v.end(); ++iter ) { table_put(*iter); } table_disp(); }
[Обновление]
Он вычисляется как квадрат или прямоугольник в том случае, если внутри четырех углов находятся точки, в которые введены=* и !=0. " независимо от того, что внутри квадрата или прямоугольника содержится 0"
Нравится:
__1 2 3 4 5 1 * 0 * 0 * 2 0 0 * 0 * 3 * 0 * * 0
Вот квадраты=1(1,1)& (3,1)& (1,3)& (3,3) и прямоугольник =2 первый(3,1)& (3,2)& (5,1)& (5,2) второй(1,1)& (3,1)& (1,3)& (3,3) 2) отсчет, начинающийся от первой ближайшей точки до (1,1) до конца таблицы методом обратного отсчета.
OriginalGriff
И что же?
Где же вопрос?
Где ты застрял?
Какая помощь вам нужна?
Patrice T
А у вас есть вопрос ?
Объясните свою проблему.
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Patrice T
В чем проблема ?
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.