| ||||||||||
| 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 | |||||||||
怎么一直wrong answer啊哪位大神帮帮忙看看吧,有没有测试数据啊,明明都对了,还报错,妹的
#include<iostream>
using namespace std;
int N,M,target;
int tou,wei;
int buz[100001];
bool visit[101][101];
struct zhuangtai
{
int n,m;
int t;
int back;
int lx;//1:N装满;2:M装满;3:N清空;4:M清空;5:N往M中;6:M往N中
}s[10001];
zhuangtai ls;
void fill(int q)//q=1将N装满,q=2将M装满
{
if(q==1) ls.n=N;
else ls.m=M;
return ;
}
void drop(int q)//q=1将N倒掉,q=2将M倒掉
{
if(q==1) ls.n=0;
else ls.m=0;
return ;
}
void pour(int q)//q=1将N倒往M,q=2将M倒往N
{
if(q==1)
if(ls.n<=M-ls.m)
{ls.m+=ls.n;ls.n=0;}
else
{ls.n-=(M-ls.m);ls.m=M;}
else
if(ls.m<=N-ls.n)
{ls.n+=ls.m;ls.m=0;}
else
{ls.m-=(N-ls.n);ls.n=N;}
return ;
}
void push(int i,zhuangtai l)
{
s[i].n =l.n ;s[i].m =l.m ;s[i].t =l.t;
s[i].lx =l.lx ;s[i].back =l.back ;
wei++;
}
void shuchu(int i)
{
int k=1;
cout<<s[i].t <<endl;
buz[k++]=s[i].lx ;
int j=s[i].back ;
while(j)
{buz[k++]=s[j].lx;j=s[j].back ;}
for(j=k-1;j;j--)
if(buz[j]==1) cout<<"FILL(1)"<<endl;
else if(buz[j]==2)cout<<"FILL(2)"<<endl;
else if(buz[j]==3)cout<<"DROP(1)"<<endl;
else if(buz[j]==4)cout<<"DROP(1)"<<endl;
else if(buz[j]==5)cout<<"POUR(1,2)"<<endl;
else cout<<"POUR(2,1)"<<endl;
return ;
}
int main()
{
while(cin>>N>>M>>target){
zhuangtai x;
x.n=0;x.m=0;x.t=0;x.back =0;x.lx =0;
memset(visit,false,sizeof(visit));
if(target>M && target>N)
{cout<<"impossible"<<endl;continue;}
tou=wei=0;
push(wei,x);
visit[0][0]=true;
while(tou<=wei)
{
if(s[tou].n==target || s[tou].m==target)
{shuchu(tou);break;}
ls.n=s[tou].n;ls.m=s[tou].m;ls.t=s[tou].t+1;ls.back =tou;
if(ls.n <N)
{
fill(1);
if(!visit[ls.n][ls.m])
{visit[ls.n][ls.m]=true;ls.lx =1;push(wei,ls);}
}
ls.n=s[tou].n;ls.m=s[tou].m;ls.t=s[tou].t+1;ls.back =tou;
if(ls.m<M)
{
fill(2);
if(!visit[ls.n][ls.m])
{visit[ls.n][ls.m]=true;ls.lx =2;push(wei,ls);}
}
ls.n=s[tou].n;ls.m=s[tou].m;ls.t=s[tou].t+1;ls.back =tou;
if(ls.n)
{
drop(1);
if(!visit[ls.n][ls.m])
{visit[ls.n][ls.m]=true;ls.lx =3;push(wei,ls);}
}
ls.n=s[tou].n;ls.m=s[tou].m;ls.t=s[tou].t+1;ls.back =tou;
if(ls.m)
{
drop(2);
if(!visit[ls.n][ls.m])
{visit[ls.n][ls.m]=true;ls.lx =4;push(wei,ls);}
}
ls.n=s[tou].n;ls.m=s[tou].m;ls.t=s[tou].t+1;ls.back =tou;
if(ls.m <M && ls.n>0)
{
pour(1);
if(!visit[ls.n][ls.m])
{visit[ls.n][ls.m]=true;ls.lx =5;push(wei,ls);}
}
ls.n=s[tou].n;ls.m=s[tou].m;ls.t=s[tou].t+1;ls.back =tou;
if(ls.n <N && ls.m>0)
{
pour(2);
if(!visit[ls.n][ls.m])
{visit[ls.n][ls.m]=true;ls.lx =6;push(wei,ls);}
}
tou++;
}
if(tou>wei)
cout<<"impossible"<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator