标签:oar lcm desc nes class enter stack gcd constrain
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 8976 | Accepted: 4017 |
Description
Input
Output
Sample Input
3 6 HFDFFB AJHGDH DGAGEH
Sample Output
6
思路:
基础dfs,
实现代码:
//#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<cmath> #include<algorithm> #include<map> #include<queue> #include<stack> #include<set> #include<list> using namespace std; #define ll long long const int Mod = 1e9+7; const int inf = 1e9; const int Max = 1e5+10; vector<int>vt[Max]; int dx[] = {-1, 1, 0, 0}; int dy[] = { 0, 0, -1, 1}; //void exgcd(ll a,ll b,ll& d,ll& x,ll& y){if(!b){d=a;x=1;y=0;}else{exgcd(b,a%b,d,y,x);y-=x*(a/b);}} //ll inv(ll a,ll n){ll d, x, y;exgcd(a,n,d,x,y);return (x+n)%n;} ??? //int gcd(int a,int b) { return (b>0)?gcd(b,a%b):a; } ??С??? //int lcm(int a, int b) { return a*b/gcd(a, b); } ??С???? int ans = 1,n,m,vis[25]; char mp[25][25]; void dfs(int x,int y,int cnt){ for(int i=0;i<4;i++){ int nx = dx[i] + x; int ny = dy[i] + y; if(nx>=0&&nx<n&&ny>=0&&ny<m&&vis[mp[nx][ny]-‘A‘]==0){ vis[mp[nx][ny]-‘A‘] = 1; ans = max(ans,cnt+1); dfs(nx,ny,cnt+1); vis[mp[nx][ny]-‘A‘] = 0; } } } int main() { cin>>n>>m; memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>mp[i][j]; } } vis[mp[0][0]-‘A‘] = 1; dfs(0,0,1); cout<<ans<<endl; }
标签:oar lcm desc nes class enter stack gcd constrain
原文地址:http://www.cnblogs.com/kls123/p/7403775.html