随笔分类 - 搜索
摘要:*题意:给定三维迷宫,能走出来就输出最短用时,走不出输出*代码:#include#include#includeusing namespace std;char maze[31][31][31];bool visit[31][31][31];int queue[28000][3];int time[31][31][31];int l,c,r;int dir[6][3]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};void bfs(int start[3],int end[3]){ int i,k,front=0,back=1,...
阅读全文
摘要:*题意: 给一定数量的基因片段,将这些片段可并成一条片段,输出最短片段的长度。*思路: 将不同片段两两组合,求出最短长度存在addlen[i][j]中,然后用dfs遍历addlen[i][j](即把所有片段组合成一串)保存最短片段的长度,最后输出。实际上就是枚举各种情况,当然在串成一串的过程中若发现长度已经比先前存的最短长度要长就可以舍弃,直接进入下一种情况#include#include#includeusing namespace std;char gene[11][111];int addlen[11][11],len[11],sign[11];int n,t,ans;void ad..
阅读全文
摘要:*题意: 在1到n之间添加‘+’,‘-’,‘.’三种运算符令最后结果为0,输出前20种添加方法,若不足20种则全 输出,最后输出共有多少种添加方式。(‘.’表示将其两侧的数连成一个数例:1.2.3是123)*思路:dfs,枚举各种情况,找出合适的。*代码:#include#includeusing namespace std;char symbol[16];int num,n;void print(){ int i; for(i=1;i printf("%d %c ",i,symbol[i]); printf("%d\n",i);}void dfs(i.
阅读全文
摘要:*题意: 相当于在一个数轴上给定农夫的位置n与牛的位置k。假定牛不懂,农夫每次有三种移动方式:n+1.n-1.n*2。问农夫最少移动几步后才能到牛的位置。*思路: 用bfs寻找最短路径。*代码:#include#include#includeint queue[100001];bool visit[100001];int step[100001];using namespace std;void bfs(int n,int k){ memset(visit,0,sizeof(visit)); memset(step,0,sizeof(step)); int i,next,...
阅读全文
摘要:*题意: 将1-20摆成一个环,要求相邻两数相加是素数。*思路: 回溯*代码:#includeusing namespace std;int a[21];int check1(int c,int b){ for(int i=1;i<=b-1;i++) if(a[i]==c)return 0; return 1;}int check2(int x){ int k; for(k=2;k if(x%k==0)return 0; return 1;}int check3(int j,int i){ if(i<20)return (check2...
阅读全文

浙公网安备 33010602011771号