좌표 대각합

hy cho·2021년 12월 1일
0

알고리즘 공부

목록 보기
15/26
post-thumbnail

5x5 배열 코딩후 특정 좌표에서 왼쪽위 오른쪽위 왼쪽아래 오른쪽아래 4개의 합이 젤 큰 좌표 구해라

  1. 판별할 함수 sum 만든다.
  2. 모든 배열값을 sum함수에 보낸다.
  3. direct를 이용해 각 좌표의 4개합을 구해서 sum값을 리턴한다.
  4. 리턴된 sum값 중 최대값을 찾는다.
  5. 최대값이 나온 좌표를 출력한다.

#include
#include

using namespace std;

int map[5][5] = {
3,3,5,3,1,
2,2,4,2,6,
4,9,2,3,4,
1,1,1,1,1,
3,3,5,9,2
};
int direct[4][2] = {
-1,-1,
1,-1,
-1,1,
1,1
};

int sum(int indexy, int indexx)
{
int sum = 0;
for (int t = 0; t < 4; t++)
{
int dy = indexy + direct[t][0];
int dx = indexx + direct[t][1];
//왼쪽위 오른쪽위 왼쪽아래 오른쪽아래 차례로 값 받음

	if (dy >= 0 && dy <= 4 && dx >= 0 && dx <= 4)
    // 좌표가 맨끝에 있지 않을때 더한다. 최대 대각합을 구하기 위해
	{
		sum += map[dy][dx];
	}
}
return sum;

}

int main()
{

int yy, xx;
int maxx = -9999;

for (int y = 0; y < 5; y++)
{
	for (int x = 0; x < 5; x++)
	{

		int ret = sum(y, x);
		
		//cout << ret<<" ";
		if (ret > maxx)
		{
			maxx = ret;
			yy = y;
			xx = x;
       //최대값 지점의 y,x 좌표를 저장해놓음
		}

	}
}
cout << yy << " " << xx;

// 좌표 출력
}

profile
hihi

0개의 댓글