简单搜索入门
来源:互联网 发布:h3c 查看端口状态 编辑:程序博客网 时间:2024/05/16 01:56
杭电 1495 非常可乐
#include <iostream>#include <cstdio>#include <vector>#include <cstring>#include <queue>using namespace std;int s,n,m,mark[110][110],ff;struct node{int ss,nn,mm,step;}u,v;void bfs(){queue<node>q;u.ss=s,u.nn=0,u.mm=0,u.step=0,mark[u.ss][u.nn]=1;q.push(u);while(!q.empty()){u=q.front(),q.pop();if((u.ss==u.nn&&u.mm==0)){ff=1;printf("%d\n",u.step);return ;}v.ss=u.ss-(n-u.nn);///s倒入nif(v.ss>=0){v.mm=u.mm;v.nn=n;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}else{v.mm=u.mm;v.ss=0;v.nn=u.nn+u.ss;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}v.ss=u.ss-(m-u.mm);///s倒入mif(v.ss>=0){v.nn=u.nn;v.mm=m;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}else{v.nn=u.nn;v.ss=0;v.mm=u.mm+u.ss;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}v.nn=u.nn-(s-u.ss);///n倒入sif(v.nn>=0){v.mm=u.mm;v.ss=s;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}else{v.mm=u.mm;v.nn=0;v.ss=u.ss+u.nn;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}v.nn=u.nn-(m-u.mm);n倒入mif(v.nn>=0){v.ss=u.ss;v.mm=m;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}else{v.ss=u.ss;v.nn=0;v.mm=u.mm+u.nn;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}v.mm=u.mm-(s-u.ss);///m倒入sif(v.mm>=0){v.nn=u.nn;v.ss=s;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}else{v.nn=u.nn;v.mm=0;v.ss=u.ss+u.mm;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}v.mm=u.mm-(n-u.nn);///m倒入nif(v.mm>=0){v.ss=u.ss;v.nn=n;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}else{v.ss=u.ss;v.mm=0;v.nn=u.nn+u.mm;if(mark[v.ss][v.nn]==0)mark[v.ss][v.nn]=1,v.step=u.step+1,q.push(v);}}}int main(){ int t;while(scanf("%d %d %d",&s,&n,&m)&&n&&m&&s){ ff=0;memset(mark,0,sizeof(mark)); if(n<m){ t=n,n=m,m=t; }///分出大小利于只考虑两个杯子 bfs(); if(ff==0)printf("NO\n"); } return 0;}poj 3126 prime path
#include<cstdio>#include<cstring>#include<queue>#define INF 0x3f3f3f3fusing namespace std;int n,m,p[10000],l=0,a[10000],mark[10000],ff,t[5];struct node{int x,step;}u,v;///筛选素数void prim(){int i,j; for(i=2;i<10000;i++){ if(!a[i]) p[l++]=i; for(j=0;j<l&&i*p[j]<10000;j++)//筛选过程 { a[i*p[j]]=1; if(i%p[j]==0) break; } }}void bfs(){int i,j,temp;queue<node>q;u.x=n,u.step=0,mark[n]=1;q.push(u); while(!q.empty()){ u=q.front(),q.pop();if(u.x==m){ff=1;printf("%d\n",u.step);return ;} t[0]=u.x/1000,t[1]=u.x%1000/100,t[2]=u.x%100/10,t[3]=u.x%10; for(j=0;j<4;j++){ temp=t[j]; for(i=0;i<10;i++){ if (j==0&&i==0)continue;///最高为0没意义 if(i!=temp){ t[j]=i; v.x=t[0]*1000+t[1]*100+t[2]*10+t[3]; if(!mark[v.x]&&!a[v.x]){ //未被标记且是素数 v.step=u.step+1; mark[v.x]=1; q.push(v); } } } t[j]=temp; } } } int main(){int i,j,T;prim();scanf("%d",&T);while(T--){scanf("%d %d",&n,&m);memset(mark,0,sizeof(mark));bfs();if(ff==0)printf("Impossible\n");}return 0;}poj 1426 find the multiple
#include<cstdio>#include<cstring>#include<queue>#define INF 0x3f3f3f3fusing namespace std;long long n;//注意类型void bfs(){long long x,y,z=1;queue<long long>q;//类型q.push(z);while(!q.empty()){z=q.front(),q.pop();if(z%n==0){printf("%lld\n",z);return ;}x=z*10;q.push(x);y=z*10+1;q.push(y);}} int main(){int i,j;while(scanf("%lld",&n)&&n){bfs();}return 0;}hdu 1241 oil Deposits
#include<cstdio>#include<cstring>#include<queue>#define INF 0x3f3f3f3fusing namespace std;int mark[110][110],n,m,flag;int dir[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};;char mapp[110][110];struct node{int x,y,step;}u,v;bool judge(int x,int y){if(x>=0&&x<n&&y>=0&&y<m&&mark[x][y]==0&&mapp[x][y]=='@')return true;return false;}void dfs(int x,int y){int i,xx,yy;mark[x][y]=1;for(i=0;i<8;i++){xx=x+dir[i][0];yy=y+dir[i][1];if(judge(xx,yy))dfs(xx,yy);}} int main(){int i,j;while(scanf("%d %d",&n,&m)&&n&&m){getchar();for(i=0;i<n;i++){for(j=0;j<m;j++)scanf("%c",&mapp[i][j]);getchar();}memset(mark,0,sizeof(mark));flag=0;for(i=0;i<n;i++)for(j=0;j<m;j++)if(mapp[i][j]=='@'&&mark[i][j]==0){dfs(i,j);flag++;}printf("%d\n",flag);}return 0;}hdu 2612 find a way
#include<cstdio>#include<cstring>#include<queue>#define INF 0x3f3f3f3fusing namespace std;int mark[210][210],dist[210][210][2],n,m,flag;int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};char mapp[210][210];struct node{int x,y,step;}u,v;bool judge(int x,int y){if(x>=0&&x<n&&y>=0&&y<m&&mark[x][y]==0&&mapp[x][y]!='#')return true;return false;}void bfs(int x,int y){int i;queue<node>q;u.x=x,u.y=y,u.step=0,mark[x][y]=1;q.push(u);while(!q.empty()){u=q.front(),q.pop();for(i=0;i<4;i++){v.x=u.x+dir[i][0];v.y=u.y+dir[i][1];if(judge(v.x,v.y)){mark[v.x][v.y]=1;v.step=u.step+1;if(mapp[v.x][v.y]=='@')dist[v.x][v.y][flag]=v.step;q.push(v);}}}} int main(){int i,j;while(scanf("%d %d",&n,&m)!=EOF){for(i=0;i<n;i++)for(j=0;j<m;j++)dist[i][j][0]=dist[i][j][1]=INF;//记得初始化为无穷getchar();for(i=0;i<n;i++){for(j=0;j<m;j++)scanf("%c",&mapp[i][j]);getchar();}for(i=0;i<n;i++)for(j=0;j<m;j++){if(mapp[i][j]=='Y'){memset(mark,0,sizeof(mark));flag=0;bfs(i,j);}if(mapp[i][j]=='M'){memset(mark,0,sizeof(mark));flag=1;bfs(i,j);}}int minn=INF;for(i=0;i<n;i++)for(j=0;j<m;j++)if(mapp[i][j]=='@'&&minn>dist[i][j][0]+dist[i][j][1])minn=dist[i][j][0]+dist[i][j][1];printf("%d\n",minn*11);}return 0;}
0 0
- 简单搜索入门
- 简单搜索入门
- 简单搜索入门
- ElasticSearch入门-搜索如此简单
- 深度优先搜索简单入门
- lucene入门-简单的WEB搜索界面
- JAVA:lucene 入门学习,简单实例模访google搜索
- 全文检索Lucene入门之创建索引及简单搜索
- [HNOI2002]营业额统计 二叉搜索树的简单入门 splay
- 搜索入门(DFS)最简单的部分和问题
- Elasticsearch(一)-入门以及简单的搜索语法
- Lucene.NET使用入门(二)【简单的搜索网站示例】
- 简单搜索入门(二):二分答案 HDU 5248
- 搜索入门
- 搜索入门
- 搜索入门
- 搜索入门
- 搜索入门
- xlistview_footer
- xlistview_header
- HDU-5832 HDU-1212/2016网络选拔赛/大数取余
- Jquery操作下拉框(DropDownList)实现取值赋值
- SAP MM 库存初始化和批量扩充物料仓位
- 简单搜索入门
- 2016.8.14
- 订餐系统:提交订单代码实现
- 浏览器兼容性问题
- 静态库与动态库的那点事
- OGL绘制像素数据之位图字体
- 8.9字典树
- LightOJ1104---Birthday Paradox (概率)
- 应用容器化之Kubernetes实践