LETTERS (信息学奥赛一本通-T1212)
生活随笔
收集整理的這篇文章主要介紹了
LETTERS (信息学奥赛一本通-T1212)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目描述】
給出一個roe×col的大寫字母矩陣,一開始的位置為左上角,你可以向上下左右四個方向移動,并且不能移向曾經經過的字母。問最多可以經過幾個字母。
【輸入】
第一行,輸入字母矩陣行數R和列數S,1≤R,S≤20。
接著輸出R行S列字母矩陣。
【輸出】
最多能走過的不同字母的個數。
【輸入樣例】
3 6
HFDFFB
AJHGDH
DGAGEH
【輸出樣例】
6
【源程序】
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #define N 30 using namespace std; int r,s; char a[N][N]; int vis[N][N]; int num[26]; int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; int maxx=0; void dfs(int x,int y,int step) {if(maxx<step)maxx=step;for(int i=0;i<4;i++){int nx=x+dir[i][0];int ny=y+dir[i][1];if(nx>=0&&nx<r&&ny>=0&&ny<s&&vis[nx][ny]==0&&num[a[nx][ny]-'A']==0){vis[nx][ny]=1;num[a[nx][ny]-'A']=1;dfs(nx,ny,step+1);vis[nx][ny]=0;num[a[nx][ny]-'A']=0;}} } int main() {cin>>r>>s;for(int i=0;i<r;i++)for(int j=0;j<s;j++)cin>>a[i][j];num[a[0][0]-'A']=1;vis[0][0]=1;dfs(0,0,1);cout<<maxx<<endl;return 0; }?
總結
以上是生活随笔為你收集整理的LETTERS (信息学奥赛一本通-T1212)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 登山(信息学奥赛一本通-T1283)
- 下一篇: 求最长不下降序列(信息学奥赛一本通-T1