POJ 3414
来源:互联网 发布:优化农业产业结构 编辑:程序博客网 时间:2024/05/17 14:19
如此水的一道题目话了我一下午。。。。。真心但疼,不过即使过了我还是不明白我在加入队列的时候会标记现在的状态但是为毛从队列中拿出来的时候他的状态就没被标记呢?
就这个地方RE了一下午。。。
#include<stdio.h>#include<string.h>struct queue{ int num,water1,water2,d,step;};struct queue q[1000000];void print(queue p){ if(p.num!=-1) print(q[p.num]); if(p.num!=-1){ if(p.d==0){ printf("FILL(1)\n"); } if(p.d==1){ printf("FILL(2)\n"); } if(p.d==2){ printf("DROP(1)\n"); } if(p.d==3){ printf("DROP(2)\n"); } if(p.d==4){ printf("POUR(1,2)\n"); } if(p.d==5){ printf("POUR(2,1)\n"); } } return ;}int main(){ int yes,front,push; int a,b,target; int judge[105][105]; while(scanf("%d%d%d",&a,&b,&target)!=EOF){ memset(judge,0,sizeof(judge)); yes=0; /* if(target>a&&target>b){ printf("impossible\n"); continue; }*/ q[0].num=-1; q[0].water1=0; q[0].water2=0; q[0].d=0; q[0].step=0; judge[0][0]=1; front=-1; push=1; while(front!=push){ //printf("yes\n"); queue p=q[++front]; judge[p.water1][p.water2]=1;//真心不加这句话就直接RE了 。。我实在是入队的时候标记了啊啊啊啊啊 真但疼 for(int i=0;i<6;i++){ queue s; if(i==0){ if(p.water1<a&&judge[a][p.water2]==0){ s.water1=a; s.water2=p.water2; s.num=front; s.d=i; s.step=p.step+1; q[push]=s; push++; judge[s.water1][s.water2]==1;//好吧 我卖盟了 两个等号 } } if(i==1){ if(p.water2<b&&judge[p.water1][b]==0){ s.water1=p.water1; s.water2=b; s.num=front; s.d=i; s.step=p.step+1; q[push]=s; push++; judge[s.water1][s.water2]==1; } } if(i==2){ if(p.water1>0&&judge[0][p.water2]==0){ s.water1=0; s.water2=p.water2; s.num=front; s.d=i; s.step=p.step+1; q[push]=s; push++; judge[s.water1][s.water2]==1; } } if(i==3){ if(p.water2>0&&judge[p.water1][0]==0){ s.water1=p.water1; s.water2=0; s.num=front; s.d=i; s.step=p.step+1; q[push]=s; push++; judge[s.water1][s.water2]==1; } } if(i==4){ if(p.water1>0&&p.water2<b){ if((b-p.water2)>p.water1&&judge[0][p.water1+p.water2]==0){ s.water1=0; s.water2=p.water1+p.water2; s.num=front; s.d=i; s.step=p.step+1; q[push]=s; push++; judge[s.water1][s.water2]==1; } if((b-p.water2)<=p.water1&&judge[p.water1+p.water2-b][b]==0){ s.water1=p.water1-(b-p.water2); s.water2=b; s.num=front; s.d=i; s.step=p.step+1; q[push]=s; push++; judge[s.water1][s.water2]==1; } } } if(i==5){ if(p.water1<a&&p.water2>0){ if((a-p.water1)>p.water2&&judge[p.water1+p.water2][0]==0){ s.water1=p.water1+p.water2; s.water2=0; s.num=front; s.d=i; s.step=p.step+1; q[push]=s; push++; judge[s.water1][s.water2]==1; } if((a-p.water1)<=p.water2&&judge[a][p.water2+p.water1-a]==0){ s.water1=a; s.water2=p.water2-(a-p.water1); s.num=front; s.d=i; s.step=p.step+1; q[push]=s; push++; judge[s.water1][s.water2]==1; } } } if(s.water1==target||s.water2==target){ //printf("yesweq\n"); printf("%d\n",s.step); yes=1; print(s); break; } } if(yes==1) break; } if(yes==0){ printf("impossible\n"); } } return 0;}
0 0
- POJ 3414
- POJ 3414
- POJ 3414
- poj 3414
- POJ 3414
- POJ 3414
- poj-3414
- poj 3414
- 3414POJ
- poj 3414
- POJ 3414
- poj 3414
- POJ-3414
- POJ 3414
- POJ 3414
- POJ 3414 Pots
- poj 3414 pots
- POJ 3414 Pots
- POJ - Cable master (二分搜索)
- The area
- Mysql、oracle、DB2及sql server的区别
- Template /template/ajax/head.ftl not found.
- sh文件的语法
- POJ 3414
- myeclipse中格式化代码快捷键的问题解决方案和<url-pattern>的用法
- POJ 3450 Corporate Identity(KMP:最长连续公共子序列)
- 抱歉
- VS的常用快捷键如下:
- scrapy安装方法(windows以及linux)
- duilib : write text on richedit
- {A} + {B}
- POJ 2965:The Pilots Brothers' refrigerator:棋盘题目2