Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:我也留个代码,,vector水过,,,,,In Reply To:我也留个代码,,vector水过,,,,, Posted by:yy17yy at 2010-12-10 19:51:35 > #include <iostream> > #include <vector> > #include <queue> > using namespace std; > bool v[110][110]; > int a,b,c; > struct pot > { > int a,b; > vector<pair<int,int> >vec;//记录路径,,pour(1,2)记为(1,2),drop(1)记为(1,4),fill(1)记为(1,3) > pot(int aa,int bb):a(aa),b(bb){} > }; > void output(vector<pair<int,int> >&vec) > { > cout<<vec.size()-1<<endl; > int i; > for(i=1;i<vec.size();i++) > { > if(vec[i].second==3) > cout<<"FILL("<<vec[i].first<<')'<<endl; > else if(vec[i].second==4) > cout<<"DROP("<<vec[i].first<<')'<<endl; > else > cout<<"POUR("<<vec[i].first<<','<<vec[i].second<<')'<<endl; > } > } > int main() > { > cin>>a>>b>>c; > memset(v,false,sizeof(v)); > v[0][0]=true; > pot temp(0,0); > temp.vec.push_back(pair<int,int>(0,0)); > queue<pot>q; > q.push(temp); > while(!q.empty()) > { > temp=q.front(); > q.pop(); > if(temp.a==c||temp.b==c) > { > output(temp.vec); > return 0; > } > if(!v[temp.a][b]) > { > v[temp.a][b]=true; > pot p(temp); > p.b=b; > p.vec.push_back(pair<int,int>(2,3)); > q.push(p); > } > if(!v[a][temp.b]) > { > v[a][temp.b]=true; > pot p(temp); > p.a=a; > p.vec.push_back(pair<int,int>(1,3)); > q.push(p); > } > int aa=temp.a+temp.b,bb=0; > if(aa>a) > { > bb=aa-a; > aa=a; > } > if(!v[aa][bb]) > { > v[aa][bb]=true; > pot p(temp); > p.a=aa,p.b=bb; > p.vec.push_back(pair<int,int>(2,1)); > q.push(p); > } > aa=0,bb=temp.a+temp.b; > if(bb>b) > { > aa=bb-b; > bb=b; > } > if(!v[aa][bb]) > { > v[aa][bb]=true; > pot p(temp); > p.a=aa,p.b=bb; > p.vec.push_back(pair<int,int>(1,2)); > q.push(p); > } > if(!v[temp.a][0]) > { > v[temp.a][0]=true; > pot p(temp); > p.b=0; > p.vec.push_back(pair<int,int>(2,4)); > q.push(p); > } > if(!v[0][temp.b]) > { > v[0][temp.b]=true; > pot p(temp); > p.a=0; > p.vec.push_back(pair<int,int>(1,4)); > q.push(p); > } > } > cout<<"impossible"<<endl; > return 0; > } 我怒了!~C++为什么有STL~~!~ Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator