|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.09.2010, 18:18 | #1 |
Пользователь
Регистрация: 02.04.2010
Сообщений: 12
|
задача про муху
Здравствуйте! есть задачка http://ipc.susu.ac.ru/210-2.html?problem=187
Вот ее решение нашел. Сам недавно только программировать начал. Может ли кто объяснить попонятнее само решение задачи? #include<iostream> #include<string> #include<vector> #include<stack> #include<list> using namespace std; int main() { vector<vector<char> >g(256); int n; cin>>n; if(!n)return 0; vector<int> test(256,0); for(int i=0;i<n;i++) { char a,b; cin>>a>>b; g[b].push_back(a); test[a]++; test[b]--; } int first=-1,last=-1; for(int i=0;i<256;i++) { if(test[i]==0)continue; if(test[i]==-1&&first==-1){first=i;continue;} if(test[i]==1&&last==-1){last=i;continue;} cout<<"IMPOSSIBLE!"; return 0; } if(first==-1) for(first=0;first<256;first++) if(g[first].size()) break; stack<char> s; string out; s.push(first); while(!s.empty()) { char c=s.top(); if (g[c].empty()) { out+=c; s.pop(); n--; } else { s.push(g[c].back()); g[c].pop_back(); } } if(n==-1)cout<<out; else cout<<"IMPOSSIBLE!"; return 0; } |
14.09.2010, 20:59 | #2 |
Регистрация: 14.09.2010
Сообщений: 3
|
Я воще не вкурил чо требуется а главное зачем ?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача про деревья. | WhyBeNormal | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 21.12.2008 23:51 |
Задача про 3 прямые | meds | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 17.11.2008 12:24 |
Задача про треугольник | YO$YA | Помощь студентам | 10 | 15.11.2008 20:29 |
Задача про переключатели | Night | Помощь студентам | 5 | 21.01.2007 18:15 |