广搜 poj3278 poj1426 poj3126
Catch That Cow
Time Limit: 2000 MS Memory Limit: 65536 KB
64-bit integer IO format: %I64d , %I64u Java class name: Main
Description
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.
* Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minute
* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.
If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?
Input
Output
Sample Input
5 17
Sample Output
4
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <queue> using namespace std;
#define max 100002 ///看了别人的代码 说广搜的标记数组 会很大 如果开成局部的会PE
bool vis[max];
int deep[max];
int n,k; int bfs()
{
queue<int>q;
q.push(n);
memset(vis,false,sizeof(vis)); ///全没有遍历过
vis[n]=true; ///起点遍历过了。。
memset(deep,,sizeof(deep)); ///初始都定义为0 走了0步 17
deep[n]=; while(!q.empty())
{
int tp=q.front();
q.pop();
vis[tp]=true;
if(tp==k)
break;
else
{
int ans1=tp+;
int ans2=tp-;
int ans3=tp*;
if(ans1<=&&!vis[ans1])
{
q.push(ans1);
deep[ans1]=deep[tp]+;
//cout<<deep[ans1]<<endl;
vis[ans1]=true;
}
if(ans2>=&&!vis[ans2]) ///注意边界条件 刚刚>0 WA了
{
q.push(ans2);
deep[ans2]=deep[tp]+;
//cout<<deep[ans2]<<endl;
vis[ans2]=true; }
if(ans3<=&&!vis[ans3])
{
q.push(ans3);
deep[ans3]=deep[tp]+;
// cout<<deep[ans3]<<endl;
vis[ans3]=true; }
}
}
return deep[k];
} int main()
{
cin>>n>>k;
printf("%d\n",bfs());
return ;
}
第一道广搜题 参考别人的代码~~~~http://kymowind.blog.163.com/blog/static/1842222972011717112727688/
poj1426 http://blog.csdn.net/lyy289065406/article/details/6647917
Prime Path
Time Limit: 1000 MS Memory Limit: 65536 KB
64-bit integer IO format: %I64d , %I64u Java class name: Main
Description
The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offices. — It is a matter of security to change such things every now and then, to keep the enemy in the dark.
— But look, I have chosen my number 1033 for good reasons. I am the Prime minister, you know!
— I know, so therefore your new number 8179 is also a prime. You
will just have to paste four new digits over the four old ones on your
office door.
— No, it’s not that simple. Suppose that I change the first digit to an 8, then the number will read 8033 which is not a prime!
— I see, being the prime minister you cannot stand having a non-prime number on your door even for a few seconds.
— Correct! So I must invent a scheme for going from 1033 to 8179 by a
path of prime numbers where only one digit is changed from one prime to
the next prime.
Now, the minister of finance, who had been eavesdropping, intervened.
— No unnecessary expenditure, please! I happen to know that the price of a digit is one pound.
— Hmm, in that case I need a computer program to minimize the cost. You don't know some very cheap software gurus, do you?
— In fact, I do. You see, there is this programming contest going
on... Help the prime minister to find the cheapest prime path between
any two given four-digit primes! The first digit must be nonzero, of
course. Here is a solution in the case above.
1033
1733
3733
3739
3779
8779
8179
The
cost of this solution is 6 pounds. Note that the digit 1 which got
pasted over in step 2 can not be reused in the last step – a new 1 must
be purchased.
Input
test cases (at most 100). Then for each test case, one line with two
numbers separated by a blank. Both numbers are four-digit primes
(without leading zeros).
Output
Sample Input
3
1033 8179
1373 8017
1033 1033
Sample Output
6
7
0 题意:从第一个数编导第二个数最少需要多少步 要求:每次只能改变一个数且这个数与之前的数都不一样 同时这个数时素数
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <queue>
#include <math.h> using namespace std;
int prime[]; void inin()
{
int i,j;
for(i=;i<=;i++){
for(j=;j<i;j++)
if(i%j==){
prime[i]=false;
break;
}
if(j==i) prime[i]=true;
}
} int vis[]; ///是否遍历过
int t[]; ///存放各个位的数
int num[]; ///最后输出的值 int bfs(int n,int m)
{
int temp;
queue<int>q;
q.push(n);
memset(vis,,sizeof(vis));
memset(num,,sizeof(num));
vis[n]=;
memset(t,,sizeof(t)); while(!q.empty())
{
int tp=q.front();
q.pop();
if(tp==m)
return num[tp]; t[]=tp/;
t[]=tp%/;
t[]=tp%/;
t[]=tp%; for(int i=;i<;i++)
{
temp=t[i];
for(int j=;j<=;j++)
if(temp!=j)
{
t[i]=j;
int ans=t[]*+t[]*+t[]*+t[]; if(!vis[ans]&&prime[ans])
{
num[ans]=num[tp]+;
vis[ans]=;
q.push(ans);
}
if(ans==m)
return num[ans];
}
t[i]=temp;
}
}
return -;
} int main()
{
int n,m,tt;
inin();
cin>>tt;
while(tt--)
{
cin>>n>>m;
if(bfs(n,m)!=-)
cout<<bfs(n,m)<<endl;
else
cout<<"Impossible"<<endl;
}
return ;
}
之前判断素数的函数不是这样写的 一直WA 可是我的错在哪里了呢 先贴上 以后看看
int prim(int n)
{
for(int i=;i<sqrt(n);i++)
{
if(n%i==)
{
return false;
break;
}
}
return true;
}
广搜 poj3278 poj1426 poj3126的更多相关文章
- poj3126 Prime Path 广搜bfs
题目: The ministers of the cabinet were quite upset by the message from the Chief of Security stating ...
- HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?
这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5652(二分+广搜)
题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之 ...
- nyoj 613 免费馅饼 广搜
免费馅饼 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...
- poj 3984:迷宫问题(广搜,入门题)
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7635 Accepted: 4474 Description ...
- poj 3278:Catch That Cow(简单一维广搜)
Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 45648 Accepted: 14310 ...
- 双向广搜 POJ 3126 Prime Path
POJ 3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16204 Accepted ...
- 广搜+打表 POJ 1426 Find The Multiple
POJ 1426 Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25734 Ac ...
- 双向广搜 codevs 3060 抓住那头奶牛
codevs 3060 抓住那头奶牛 USACO 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 农夫约翰被告知一头逃跑奶牛 ...
随机推荐
- Django 访问admin提示ViewDoesNotExist at /admin/
ViewDoesNotExist at /admin/ Could not import django.views.generic.simple.redirect_to. Parent module ...
- c#对dataset和list集合压缩和解压,能提高访问速度
public class YS { public static byte[] Decompress(byte[] data) { byte[] bData; MemoryStream ms = new ...
- vue中常用的指令
1. v-textv-text主要用来更新textContent,可以等同于JS的text属性. <span v-text="msg"></span> 2. ...
- C#调用开源图像识别类库tessnet2
首先下载tessnet2_32.dll及相关语言包,将dll加入引用 private tessnet2.Tesseract ocr = new tessnet2.Tesseract();//声明一个O ...
- 从hash算法到java hashcode()
转载 https://blog.csdn.net/Walk_er/article/details/74976146 hash算法是一个摘要算法(yy:描述性算法:可以给一个物体确切的描述,但是不能通过 ...
- Mysql 数据库修改datadir和调整默认引擎要注意的问题
数据库更改 datadir 默认位置: 首先前面的基础操作我就不多说了,无非是复制mysqldata目录,然后修改 my.conf 配置文件 datadir 的 路径地址.然后重启mysql.这里可能 ...
- jquery特殊字符转义方法
//特殊字符转义function escapeJquery(srcString) { // 转义之后的结果 var escapseResult = srcString; // javascript正则 ...
- es6 字符串方法
1.字符串的新方法 includes() 包含属性 startsWith() 头部开始是否包含 endWith() 字符串是否在尾部 ========三个返回值都为布尔值 第二参数为数字 e ...
- UVa 10163 Storage Keepers (二分 + DP)
题意:有n个仓库,m个管理员,每个管理员有一个能力值P,每个仓库只能由一个管理员看管,但是每个管理员可以看管k个仓库(但是这个仓库分配到的安全值只有p/k,k=0,1,...),雇用的管理员的工资即为 ...
- HDU 5321 Beautiful Set (莫比乌斯反演 + 逆元 + 组合数学)
题意:给定一个 n 个数的集合,然后让你求两个值, 1.是将这个集合的数进行全排列后的每个区间的gcd之和. 2.是求这个集合的所有的子集的gcd乘以子集大小的和. 析:对于先求出len,len[i] ...