hdu 1022 Train Problem I 解题报告
生活随笔
收集整理的這篇文章主要介紹了
hdu 1022 Train Problem I 解题报告
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1022
???? 其實是一道上數據結構課講過的例題? 只不過當時講的是怎么用手算? 一道水題又花了好長時間 其實就是棧的模擬 相當于數據結構的練習題 利用棧的先進后出的順序 先將數進棧 等到合適的時候不停地出棧 在進棧 最后看看棧是否為空 如果能全部出棧棧為空?輸出路徑 否則無法實現? 記錄路徑 我用了一個隊列 其實可以使用數組 不過想到先進先出首先想到了隊列queue?使用各種數據結構的時候一定要注意多次使用時要清空結構 還有就是要考慮空的情況? STL 有點使人變懶了 希望以后自己能少用吧
粘代碼:
1 #include<iostream>2 #include<stack>
3 #include<string>
4 #include<string>
5 #include<queue>
6 #define in 1
7 #define out 0
8 using namespace std;
9 int main()
10 { queue<bool> road;
11 stack<char> ans;
12 string begin,end;
13 int num,i,j;
14 while(cin>>num>>begin>>end)
15 {
16
17 while(!ans.empty())
18 ans.pop();
19 i=0;
20 j=0;
21 /* cout<<num<<endl;
22 cout<<begin<<endl;
23 cout<<end<<endl; */
24 for(i=0;i<num;i++)
25 {
26 if(j>=num)
27 break;
28 ans.push(begin[i]);
29 road.push(in);
30 while(!ans.empty()&&ans.top()==end[j])// 最開始的時候沒考慮ans是空的情況看看測試交了 結果數組越界
31 {
32 ans.pop();
33 road.push(out);
34 j++;
35 if(j>=num)
36 {break;}
37 }
38 }
39 if(ans.empty())
40 {
41 cout<<"Yes."<<endl;
42 while(!road.empty())
43 { if(road.front()==1)
44 cout<<"in"<<endl;
45 else
46 cout<<"out"<<endl;
47 road.pop();
48 }
49 cout<<"FINISH"<<endl;
50 }
51 else
52 {
53 cout<<"No."<<endl;
54 cout<<"FINISH"<<endl;//這最悲劇了 沒仔細看題 no的后面沒輸出finish WA了
55 while(!road.empty())//清空路徑
56 road.pop();
57 while(!ans.empty())
58 ans.pop();
59 }
60 }
61 // system("pause");
62 return 0;
63 }
轉載于:https://www.cnblogs.com/yujiaao/archive/2011/10/29/2228696.html
總結
以上是生活随笔為你收集整理的hdu 1022 Train Problem I 解题报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android UI开发第二篇——多级
- 下一篇: linux 开机自动启动服务