Hdu oj 1181 变形课

来源:互联网 发布:广电总局 网络综艺 编辑:程序博客网 时间:2024/06/03 21:17
代码一
<pre class="html" name="code">#include<stdio.h>#include<string.h>using namespace std;int visited[1000];int k;int i;int flag;struct stu{char x;char y;}a[1000];void dfs(int cur){  if(flag)return ;if(a[cur].y=='m'){    flag=1;return ;}for(int j=0;j<k;j++){if(visited[j]==0&&a[j].x==a[cur].y){visited[j]=1;dfs(j);visited[j]=0;}}}int main(){char s[20];int len;k=0;while(scanf("%s",s)!=EOF){if(s[0]=='0'){for(i=0;i<k;i++){if(a[i].x=='b'){visited[i]=1;dfs(i);if(flag)break;}}if(flag){printf("Yes.\n");}        else        printf("No.\n");        flag=0;        k=0;        memset(visited,0,sizeof(visited));}else{len=strlen(s);a[k].x=s[0];a[k].y=s[len-1];k++;}}return 0;}

代码二

这个代码是同学的,跟自己的思路(代码一)大同小异。个人比较崇尚简洁的代码。

#include<stdio.h>#include<string.h>int map[30][30];int visit[30],flot;char s[100010];void dfs(int x){    if(x=='m'-'a'){        flot=1;        return;    }    for(int i=0;i<26;i++){        if(map[x][i]&&!visit[i]){            visit[i]=1;            dfs(i);            visit[i]=0;        }    }    return;}int main(){    flot=0;int x,y,t;    while(~scanf("%s",s)){        if(!strcmp(s,"0")){            dfs('b'-'a');            if(flot)puts("Yes.");            elseputs("No.");            flot=0;            memset(map,0,sizeof(map));            memset(visit,0,sizeof(visit));        }t=strlen(s);        x=s[0]-'a';y=s[t-1]-'a';        map[x][y]=1;    }    return 0;}


 

0 0
原创粉丝点击