poj解题报告——3278
来源:互联网 发布:mac电脑怎么打顿号 编辑:程序博客网 时间:2024/06/05 06:38
题意是这样子的,给定两个整数n和k,通过 n+1或n-1 或n*2 这3种操作,使得n==k,输出最少的操作次数。
值得注意的是,这题要剪枝,不然会超时。
代码如下
#include<stdio.h>
#include<string.h>
#define MAX 100001
struct Point
{
int x;
}queue[100001];
int temp;
int step[MAX];
int visitd[MAX];
int bfs(int a,int b)
{
int front=-1,rear=0,next,i,ok=0;
memset(visitd,0,sizeof(visitd));
visitd[a]=1;
queue[0].x=a;
step[0]=0;
while(front<rear)
{
temp=queue[++front].x;
for(i=0;i<3;i++)
{
if(i==0)
next=temp-1;
else if(i==1)
next=temp+1;
else
next=temp*2;
if(next>MAX||next<0)
continue;
if(!visitd[next])
{
queue[++rear].x=next;
visitd[next]=1;
step[next]=step[temp]+1;
}
if(next==b)
return step[next];
}
}
}
void main()
{
int n,k;
scanf("%d%d",&n,&k);
if(n>=k)
{
printf("%d\n",n-k);
}
else
printf("%d\n",bfs(n,k));
}
- poj解题报告——3278
- POJ 3278 解题报告
- POJ 1088 滑雪——解题报告
- POJ 1047——解题报告
- poj解题报告——poj1006
- poj解题报告——1032
- poj解题报告——1061
- poj解题报告——1450
- poj解题报告——1002
- poj解题报告——2109
- poj解题报告——1218
- poj解题报告——1250
- poj解题报告——1012
- poj解题报告——3299
- poj解题报告——2209
- poj解题报告——2406
- poj解题报告——2242
- poj解题报告——1401
- 追求时尚,选择西安宾利婚车租赁
- 【Cocos2d-x 3.2】裁剪节点(ClippingNode)总结
- 主机开启虚拟化支持/不能安装虚拟机解决
- C语言面试题
- 关于深度优先搜索的运用
- poj解题报告——3278
- 调用外部程序对输入的影响
- 功率谱密度
- Qt——滚动条自动下移
- String split 及 转义字符
- 西安宾利婚车租赁出租车队总管的职责
- C数组和字符串
- MySql SQL语句执行的顺序
- 程序设计之基础与3种学习方法