1) ๊ฐ๋ก ์ธ์ง, ์ธ๋ก์ธ์ง ๊ตฌ๋ณํ ์ ์๊ฒ, 0๊ณผ 1์ ์ด์ฉํ์.
: 0์ธ ๊ฒฝ์ฐ์๋ ๊ฐ๋ก๋ก ์ ๊ทผํด์ผ๊ฒ ๋ค.
1์ธ ๊ฒฝ์ฐ์๋ ์ธ๋ก๋ก ์ ๊ทผํด์ผ ๊ฒ ๋ค. ๋ฅผ ์๊ฐํด์ผ ํ๋ค!
2) ๊ฐ ํ๋ง๋ค์ ์์๋ค ์๋ฆฌ๊ฐ true์ธ์ง ํ์ธํ ์ ์๋ ์กฐ๊ฑด์ ๋ง๋ค์ด์ผ ํจ.
๊ฐ๋ก
- ์ด๋ฐ์์ผ๋ก ๋์ด๋ง ํ ์ ์๋ฐ๋ฉด, ๋นํธ๋ง์คํน์ผ๋ก ๊ฐ ์์์ ๋ํ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅ
- ๊ฐ ์์์ ์๋ฆฟ์๋ฅผ ์ด๋ป๊ฒ ๋ง๋ค ๊ฒ์ด๋๊ฐ ๊ด๊ฑด์.
: ์ธ๋ก๋ ๊ฐ๋ก์ ๋์ผํ๊ฒ ๋ง๋ค์ด์ผ ํจ.
: ์ฌ๊ธฐ์ ๊ฐ๋ก๋ฅผ 0์ด๋ผ๊ณ ๊ฐ์ ์ ํ๋ค๋ฉด
1์ ๋ง๋ฌ์ ๋ , ์ด๋ฏธ ๊ตฌํด์ง 49์ ๋ํ๊ณ , ์ดํ์ ๋์ค๋ 74๋ ๋ํด์ผ ํจ.
#include <iostream>
#include <cstdio>
using namespace std;
int a[4][4];
int main() {
int n, m;
scanf("%d %d",&n,&m);
for (int i=0; i<n; i++) {
for (int j=0; j<m; j++) {
scanf("%1d",&a[i][j]);
}
}
int ans = 0;
// 0: -, 1 : |
for (int s=0; s<(1<<(n*m)); s++) {
int sum = 0;
for (int i=0; i<n; i++) {
int cur = 0;
for (int j=0; j<m; j++) {
int k = i*m+j;
if ((s&(1<<k)) == 0) {
cur = cur * 10 + a[i][j];
} else {
sum += cur;
cur = 0;
}
}
sum += cur;
}
for (int j=0; j<m; j++) {
int cur = 0;
for (int i=0; i<n; i++) {
int k = i*m+j;
if ((s&(1<<k)) != 0) {
cur = cur * 10 + a[i][j];
} else {
sum += cur;
cur = 0;
}
}
sum += cur;
}
ans = max(ans,sum);
}
cout << ans << '\n';
return 0;
}