처음 입력 받는 행과 열의 값을 전체 영토 이다.
두번째 영토를 받을 크기를 행과 열로 입력 받는다.
따라서 우리는 영토의 크기는 알수 있다.
내가 받을 영토의 크기는 고정 시키도, 이동 시키면서.
합을 구해서 최대 값을 구하면된다.
내가 받을 영토의 행 총 영토의 행과 같다면 반복문을 빠져 나가면 될것이다.
아래는 소스 코드를 첨부 하겠다.
필요하신분은 다운로드 받아 보세요 .
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int row = 0;
int cal = 0;
int array[100][100] = { 0, };
int res[100] = { 0, };
int land_row = 0;
int land_cal = 0;
cout << "행을 입력 하세요" << endl;
cin >> row;
cout << "열을 입력 하세요 " << endl;
cin >> cal;
for (int i = 0; i < row; i++)
{
for (int k = 0; k < cal; k++)
{
cin >> array[i][k];
}
}
cout << "땅의 행을 입력 하세요" << endl;
cin >> land_row;
cout << "땅의 열을 입력 하세요" << endl;
cin >> land_cal;
int row_value = 0;
int cal_value = 0;
int temp = 0;
int max = 0;
while (true)
{
temp = 0; // temp 의 값과 영토의 값을 비교 후 초기화 시켜야 하므로,
for (int i = row_value; i < land_row+row_value; i++)
{
for (int k = cal_value; k < land_cal+cal_value; k++)
{
temp += array[i][k];
}
}
if (temp > max)
{
max = temp;
}
cal_value++; // 내가받을 영토의 크기만큼 다 더한후 열을 한칸 증가 시킨다.
if (land_cal + cal_value == cal)
{
cal_value = 0;
row_value++; // 내가 받을 영토의 값을 증가시키다가 총 땅크기의 열과 같아 진다면 행을 내린다.,
// 이후 열값은 0으로 초기화, 다시 첫열부터 더해야 하므로,
}
if (row_value == row ) {
break;
}
}
cout << max << endl;
system("pause");
}
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int row = 0;
int cal = 0;
int array[100][100] = { 0, };
int res[100] = { 0, };
int land_row = 0;
int land_cal = 0;
cout << "행을 입력 하세요" << endl;
cin >> row;
cout << "열을 입력 하세요 " << endl;
cin >> cal;
for (int i = 0; i < row; i++)
{
for (int k = 0; k < cal; k++)
{
cin >> array[i][k];
}
}
cout << "땅의 행을 입력 하세요" << endl;
cin >> land_row;
cout << "땅의 열을 입력 하세요" << endl;
cin >> land_cal;
int row_value = 0;
int cal_value = 0;
int temp = 0;
int max = 0;
while (true)
{
temp = 0; // temp 의 값과 영토의 값을 비교 후 초기화 시켜야 하므로,
for (int i = row_value; i < land_row+row_value; i++)
{
for (int k = cal_value; k < land_cal+cal_value; k++)
{
temp += array[i][k];
}
}
if (temp > max)
{
max = temp;
}
cal_value++; // 내가받을 영토의 크기만큼 다 더한후 열을 한칸 증가 시킨다.
if (land_cal + cal_value == cal)
{
cal_value = 0;
row_value++; // 내가 받을 영토의 값을 증가시키다가 총 땅크기의 열과 같아 진다면 행을 내린다.,
// 이후 열값은 0으로 초기화, 다시 첫열부터 더해야 하므로,
}
if (row_value == row ) {
break;
}
}
cout << max << endl;
system("pause");
}
댓글