• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
返回主页

FC WORLD!!!

一起聊聊产品和研发的那些事!乐在其中! 公众号 : 聊聊IT那些事。V号:wyf_fcworld

  • 博客园
  • 首页
  • 新随笔
  • 联系
  • 订阅
  • 管理

hdu1181(变形课)

#include"iostream"
using namespace std;
char s[100];
char S[100],E[100];
int i=0,j;
int used[1000];
int sign=0,mark=0;
void dfs(int x)
{
    if(E[x]=='m') {  cout<<"Yes."<<endl; sign=1; mark=1; }    //sign标志已经找到尾“m”,mark表示找到'm'的情况:如果找到则mark=1,否则mark=0;
    else
    {
        for(int p=0; p<i; p++)
          if(S[p]==E[x])                // 尾和首是否相等  (1)used[p]判断S[p]是否用过,以p为标志
          { 
              if(used[p]==1)   continue; 
               else  {  used[p]=1; dfs(p); if(mark==1) break; } 
          } 
      }
}
int main()
{
    
    int n;
      while(scanf("%s",s)!=EOF)
      {   
       memset(used,0,sizeof(used)); 
       mark=0; sign=0;
          if(s[0]!='0')             //将s[]首尾字母存入S[],E[],即比较首尾字母即可
       {
        S[i]=s[0];
        E[i]=s[strlen(s)-1];
        i++;
       }
      if(s[0]=='0')
      {
        int flag=0;
         for(j=0; j<i; j++)
         {
         if(S[j]=='b')            
         {
           used[j]=1;                  // used[]判断是否用过0 没用过;1用过
           dfs(j);
           if(sign==1) break;     //sign==1时,标志找到“m” ,并且跳出
         }
          else flag++;                   //判断没b的情况
         }
       if(flag==i||mark==0) cout<<"No."<<endl;    //mark==0表示没找到'm' ,flag==i表示'b'不存在
       i=0;               //运算完后从新初始化i
     }
    }
      return 0; 
}

http://acm.hdu.edu.cn/showproblem.php?pid=1181

dfs!

posted @ 2011-04-22 12:17  聊聊IT那些事  阅读(642)  评论(0)    收藏  举报
刷新页面返回顶部

公告

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3