国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

hdu1181:變形課

2019-11-06 06:27:58
字體:
來源:轉載
供稿:網(wǎng)友

題目鏈接

變形課

Time Limit: 2000/1000 MS (java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 23302    Accepted Submission(s): 8442PRoblem Description呃......變形課上Harry碰到了一點小麻煩,因為他并不像Hermione那樣能夠記住所有的咒語而隨意的將一個棒球變成刺猬什么的,但是他發(fā)現(xiàn)了變形咒語的一個統(tǒng)一規(guī)律:如果咒語是以a開頭b結尾的一個單詞,那么它的作用就恰好是使A物體變成B物體.Harry已經(jīng)將他所會的所有咒語都列成了一個表,他想讓你幫忙計算一下他是否能完成老師的作業(yè),將一個B(ball)變成一個M(Mouse),你知道,如果他自己不能完成的話,他就只好向Hermione請教,并且被迫聽一大堆好好學習的道理. Input測試數(shù)據(jù)有多組。每組有多行,每行一個單詞,僅包括小寫字母,是Harry所會的所有咒語.數(shù)字0表示一組輸入結束. Output如果Harry可以完成他的作業(yè),就輸出"Yes.",否則就輸出"No."(不要忽略了句號) Sample Input
sosoonrivergoesthemgotmoonbeginbig0 Sample Output
Yes.HintHint Harry 可以念這個咒語:"big-got-them". SourceGardon-DYGG Contest 1 RecommendJGShining   |   We have carefully selected several similar problems for you:  1175 1180 1258 1242 2553 

解題思路: DFS

用一個結構體數(shù)組a,a[i].x, a[i].y 分別用來存每個單詞的開頭和結尾, 循環(huán)查找開頭為'b'的單詞a[i].x == 'b',

然后DFS(s)。當a[s].x == 'm'時,找到目標查詢結束,否則就繼續(xù)查找以當前點的結尾為開頭的i, 即a[s].y == a[i].x,繼續(xù)DFS(i);

代碼:

#include <cmath>#include <string>#include <cstdio>#include <sstream>#include <cstring>#include <iostream>#include <algorithm>#define LOCALusing namespace std;int n = 0;int visit[1000];int flag = 0;struct ln{    char x, y;}a[1000];void dfs(int s){    if(flag == 1) return;    //提前退出以節(jié)省時間,也可不必這也寫。        if(a[s].x == 'm')       //目標情況    {        flag = 1;        return;    }    else    {        for (int i = 0; i < n; i++)            if(a[s].y == a[i].x)    //當前點的末尾是下個點的開始            if(!visit[i])            {                visit[i] = 1;       //標記走過                dfs(i);                visit[i] = 0;       //標記還原            }    }}int main(){    string s;    while (cin>>s)    {        //因為題目要求循環(huán)輸入寫的有點亂。        if(s == "0") {            memset(visit, 0, sizeof(visit));            flag = 0;                       for(int i = 0; i < n; i++)   //循環(huán)查詢開頭為b的然后深搜            {                if(a[i].x == 'b')                    dfs(i);                if(flag == 1)                    break;            }            if(flag)                cout << "Yes." << endl;            else                cout << "No." << endl;                       n = 0;                  //記得將n置零        }        //這里為將輸入的s的開頭結尾存入a中        int k = s.length();        a[n].x = s[0];        a[n].y = s[k-1];        n++;    }    return 0;}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 华宁县| 科尔| 石门县| 四会市| 都昌县| 莒南县| 五常市| 从江县| 凤翔县| 习水县| 虎林市| 军事| 卓资县| 大石桥市| 江永县| 丰城市| 达州市| 璧山县| 桂阳县| 普陀区| 克东县| 三明市| 正镶白旗| 安乡县| 定陶县| 中山市| 河西区| 织金县| 湟中县| 法库县| 琼结县| 鄂尔多斯市| 山阴县| 宣化县| 建阳市| 和顺县| 芒康县| 长汀县| 东安县| 广安市| 明溪县|