5x5 배열 코딩후 특정 좌표에서 왼쪽위 오른쪽위 왼쪽아래 오른쪽아래 4개의 합이 젤 큰 좌표 구해라
#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;
// 좌표 출력
}