[BOJ/C+]1987号アルファベット
11646 ワード
これは、グラフィックブラウズ、バックグラウンドトラッキング、DFSによって解決できる問題です.ボードカードの入力は文字列で構成され、配列に格納されます. ブール型配列で前のアルファベットかどうかを判断します. は上下左右に踏みつけていない格子に移動し,マーキングを行い,踏みつけていない格子に変えて他の経路を探索する. (可能なすべてのパスを参照) DFSを使用してすべてのパスを参照します. Code
Code #include <iostream>
#include <string>
#define MAX 21
using namespace std;
int r,c;
string road;
char field[MAX][MAX];
bool visited[26];
int dy[4]={0,1,0,-1};
int dx[4]={1,0,-1,0};
int result=1;
int Big(int a, int b){
if(a>b)
return a;
return b;
}
void Input(){
cin>>r>>c;
for(int i=0; i<r; i++){
cin>>road;
for(int j=0; j<c; j++){
field[i][j]=road[j];
}
}
}
void DFS(int y, int x, int cnt){
result=Big(result, cnt);
for(int i=0; i<4; i++){
int ny=y+dy[i];
int nx=x+dx[i];
if(ny>=0&&nx>=0&&ny<r&&nx<c){
if(!visited[field[ny][nx]-'A']){
visited[field[ny][nx]-'A']=true;
DFS(ny, nx, cnt+1);
visited[field[ny][nx]-'A']=false;
}
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
Input();
visited[field[0][0]-'A']=true;
DFS(0,0,1);
cout<<result<<endl;
return 0;
}
Reference
この問題について([BOJ/C+]1987号アルファベット), 我々は、より多くの情報をここで見つけました
https://velog.io/@xx0hn/BOJ-C-1987번-알파벳
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include <iostream>
#include <string>
#define MAX 21
using namespace std;
int r,c;
string road;
char field[MAX][MAX];
bool visited[26];
int dy[4]={0,1,0,-1};
int dx[4]={1,0,-1,0};
int result=1;
int Big(int a, int b){
if(a>b)
return a;
return b;
}
void Input(){
cin>>r>>c;
for(int i=0; i<r; i++){
cin>>road;
for(int j=0; j<c; j++){
field[i][j]=road[j];
}
}
}
void DFS(int y, int x, int cnt){
result=Big(result, cnt);
for(int i=0; i<4; i++){
int ny=y+dy[i];
int nx=x+dx[i];
if(ny>=0&&nx>=0&&ny<r&&nx<c){
if(!visited[field[ny][nx]-'A']){
visited[field[ny][nx]-'A']=true;
DFS(ny, nx, cnt+1);
visited[field[ny][nx]-'A']=false;
}
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
Input();
visited[field[0][0]-'A']=true;
DFS(0,0,1);
cout<<result<<endl;
return 0;
}
Reference
この問題について([BOJ/C+]1987号アルファベット), 我々は、より多くの情報をここで見つけました https://velog.io/@xx0hn/BOJ-C-1987번-알파벳テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol