白準1018号:チェス盤を塗り直す
14568 ワード
リンク:https://www.acmicpc.net/problem/1018
2 D配列の初期化方法がわかりません.1次元配列の初期化のように、
資料構造の課題をするときもいつも大変ですが、二次元文字の並べ替えの比較が一番難しいです.
受信文字をintとして保存する比較(Askyコード:https://kd3302.tistory.com/668参照) strcmp を使用
2 D配列の初期化方法がわかりません.1次元配列の初期化のように、
= { 'W' }
も問題ありません.like char arr [50][50]={ 'W' };
チェス盤なので、上りと列を足した値が偶数と奇数で繰り返されることを忘れずに.資料構造の課題をするときもいつも大変ですが、二次元文字の並べ替えの比較が一番難しいです.
受信文字
#include<iostream>
using namespace std;
int main() {
int m,n; //m 가로 n 세로
cin >> n >> m;
int arr[50][50]={ 0 }; //배열 초기화하기
char num;
for (int i = 0; i < n; i++) { //입력된 배열을 arr 배열에 넣어주기
for (int j = 0; j < m; j++) {
cin >> num;
arr[i][j] = num;
}
}
int min = 50; //최종 결과값인 min값 초기화
for (int i = 0; i < n - 7; i++) {
for (int j = 0; j < m - 7; j++) {
int wtob = 0;
int btow = 0;
for (int a = i; a < i + 8; a++) {
for (int b = j; b < j + 8; b++) {
if ((a + b) % 2 == 0) {
if (arr[a][b] == 66)
btow++;
else
wtob++;
}
else {
if (arr[a][b] == 66)
wtob++;
else
btow++;
}
}
}
min = (min < wtob) ? min : wtob; //한번 싹 다 돌고 나서 최솟값 검색
min = (min < btow) ? min : btow;
}
}
cout << min; //결과 출력
return 0;
}
今回のアルゴリズムはすぐには考えにくいが,主な特徴は行と列に値を加えた値がずっと単重であることである. for (int i = 0; i < n - 7; i++) {
for (int j = 0; j < m - 7; j++) {
このように7を取り除くと,8×8の大きさで与えられた値を探索することができる.int wtob = 0;
int btow = 0;
1つのブロック単位でナビゲーションを行う場合は、ナビゲーションを開始する前にwtob(bはwの部分であるべき)、btow(bはwの部分であるべき)を初期化し、変更する最小値を一定に保つことができます.for (int a = i; a < i + 8; a++) {
for (int b = j; b < j + 8; b++) {
町内を探索する.if ((a + b) % 2 == 0) {
if (arr[a][b] == 66)
btow++;
else
wtob++;
}
まず行と列を加算し,偶数が現れる場合を探索する.その部分が66,Bであればbtowを1つ増やし,そうでなければwtobを1つ増やします.else {
if (arr[a][b] == 66)
wtob++;
else
btow++;
}
行と列を追加する値が奇数の場合.その結果,開始がwであれば,b日とw日に分ける必要はない.wから基準値をwに設定して比較を開始すると、確認した部分がbであればbtow値は増加し続けます.逆にwtobは全く増加していないため、リンゴを結ぶminはwtobとbtowの中で最も高い価格になるだろう.min = (min < wtob) ? min : wtob;
min = (min < btow) ? min : btow;
最終的にmin,wtob,btowで三重演算項により最高値を探し出す.Reference
この問題について(白準1018号:チェス盤を塗り直す), 我々は、より多くの情報をここで見つけました https://velog.io/@ntbij29/백준-1018번-체스판-다시-칠하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol