Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

怎么一直wrong answer啊

Posted by haha132 at 2013-08-05 15:08:57
哪位大神帮帮忙看看吧,有没有测试数据啊,明明都对了,还报错,妹的
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator