hud-1495--非常可乐 VS nyoj-21--三个水杯
生活随笔
收集整理的這篇文章主要介紹了
hud-1495--非常可乐 VS nyoj-21--三个水杯
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
hdu--題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1495
nyoj--題目鏈接:http://acm.nyist.net/JudgeOnline/problem.php?pid=21
hdu-1495---非常可樂
#include<stdio.h> #include<string.h> #include<queue> using namespace std; int vis[105][105][105]; struct node {int x,y,z,step; }; void bfs(int S,int N,int M) {node p,q;queue<node> Q;p.x=S;p.y=0;p.z=0;p.step=0;int pp=S/2;Q.push(p);while(!Q.empty()){q=Q.front();Q.pop();vis[q.x][q.y][q.z]=1;if((q.x==pp&&q.y==pp)||(q.x==pp&&q.z==pp)||(q.z==pp&&q.y==pp)){printf("%d\n",q.step);return;}if(q.x!=0){//x->yif(q.x>N-q.y)//倒不完{p.x=q.x-(N-q.y);p.y=N;p.z=q.z;p.step=q.step+1;}else//倒完{p.x=0;p.y=q.x+q.y;p.z=q.z;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}//x->zif(q.x>M-q.z)//倒不完{p.x=q.x-(M-q.z);p.y=q.y;p.z=M;p.step=q.step+1;}else//倒完{p.x=0;p.z=q.x+q.z;p.y=q.y;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}}if(q.y!=0){//y->xif(q.y>S-q.x)//倒不完{p.y=q.y-(S-q.x);p.x=S;p.z=q.z;p.step=q.step+1;}else//倒完{p.y=0;p.x=q.y+q.x;p.z=q.z;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}//y->zif(q.y>M-q.z)//倒不完{p.y=q.y-(M-q.z);p.x=q.x;p.z=M;p.step=q.step+1;}else//倒完{p.y=0;p.x=q.x;p.z=q.y+q.z;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}}if(q.z!=0){//z->yif(q.z>N-q.y)//倒不完{p.z=q.z-(N-q.y);p.y=N;p.x=q.x;p.step=q.step+1;}else//倒完{p.z=0;p.y=q.z+q.y;p.x=q.x;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}//z->xif(q.z>S-q.x)//倒不完{p.z=q.z-(S-q.x);p.y=q.y;p.x=S;p.step=q.step+1;}else//倒完{p.z=0;p.y=q.y;p.x=q.z+q.x;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}}}printf("NO\n");return; } int main() {int N,M,S;while(scanf("%d%d%d",&S,&N,&M),S,N,M){memset(vis,0,sizeof(vis));if(S%2) printf("NO\n");else bfs(S,N,M);} }nyoj---21--三個水杯 #include<stdio.h> #include<string.h> #include<queue> using namespace std; int vis[105][105][105]; struct node {int x,y,z,step; }; int N,M,S,a,b,c; int bfs() {node p,q;queue<node> Q;memset(vis,0,sizeof(vis));p.x=S;p.y=0;p.z=0;p.step=0;Q.push(p);while(!Q.empty()){q=Q.front();Q.pop();vis[q.x][q.y][q.z]=1;if(q.x==a&&q.y==b&&q.z==c){return q.step;}if(q.x!=0){//x->yif(q.x>N-q.y)//倒不完{p.x=q.x-(N-q.y);p.y=N;p.z=q.z;p.step=q.step+1;}else//倒完{p.x=0;p.y=q.x+q.y;p.z=q.z;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}//x->zif(q.x>M-q.z)//倒不完{p.x=q.x-(M-q.z);p.y=q.y;p.z=M;p.step=q.step+1;}else//倒完{p.x=0;p.z=q.x+q.z;p.y=q.y;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}}if(q.y!=0){//y->xif(q.y>S-q.x)//倒不完{p.y=q.y-(S-q.x);p.x=S;p.z=q.z;p.step=q.step+1;}else//倒完{p.y=0;p.x=q.y+q.x;p.z=q.z;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}//y->zif(q.y>M-q.z)//倒不完{p.y=q.y-(M-q.z);p.x=q.x;p.z=M;p.step=q.step+1;}else//倒完{p.y=0;p.x=q.x;p.z=q.y+q.z;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}}if(q.z!=0){//z->yif(q.z>N-q.y)//倒不完{p.z=q.z-(N-q.y);p.y=N;p.x=q.x;p.step=q.step+1;}else//倒完{p.z=0;p.y=q.z+q.y;p.x=q.x;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}//z->xif(q.z>S-q.x)//倒不完{p.z=q.z-(S-q.x);p.y=q.y;p.x=S;p.step=q.step+1;}else//倒完{p.z=0;p.y=q.y;p.x=q.z+q.x;p.step=q.step+1;}if(!vis[p.x][p.y][p.z]){Q.push(p);vis[p.x][p.y][p.z]=1;}}}return -1; } int main() {int T;scanf("%d",&T);while(T--){scanf("%d%d%d%d%d%d",&S,&N,&M,&a,&b,&c);printf("%d\n",bfs());} } /*45 6 3 1 6 0 0 84 62 13 51 20 13 71 54 47 17 7 47 85 48 23 15 48 22 84 68 19 44 21 19 75 46 3 65 7 3 70 57 20 6 44 20 49 31 15 6 31 12 88 53 32 16 53 19 56 31 18 29 9 18 96 56 43 25 28 43 93 83 48 0 45 48 60 27 14 23 27 10 70 60 9 10 51 9 82 34 12 66 4 12 87 64 51 13 64 10 66 48 14 62 0 4 86 74 21 43 22 21 99 47 23 85 0 14 68 29 3 62 3 3 54 53 1 10 43 1 95 79 75 91 0 4 84 7 5 72 7 5 84 62 13 51 20 13 71 54 47 17 7 47 85 48 23 15 48 22 84 68 19 44 21 19 75 46 3 65 7 3 70 57 20 6 44 20 49 31 15 6 31 12 88 53 32 16 53 19 56 31 18 29 9 18 96 56 43 25 28 43 93 83 48 0 45 48 60 27 14 23 27 10 70 60 9 10 51 9 82 34 12 66 4 12 87 64 51 13 64 10 66 48 14 62 0 4 86 74 21 43 22 21 99 47 23 85 0 14 68 29 3 62 3 3 54 53 1 10 43 1 95 79 75 91 0 4 84 7 5 72 7 5 */
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的hud-1495--非常可乐 VS nyoj-21--三个水杯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 漫画:下辈子你还当程序员么?
- 下一篇: 跳槽到月薪三万的公司,但是不到半年就后悔