dfs
-skyline-
这个作者很懒,什么都没留下…
展开
-
POJ 1321 棋盘问题
Description在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= ...原创 2018-07-19 16:16:48 · 123 阅读 · 0 评论 -
kotori和糖果(OEIS)
链接:https://ac.nowcoder.com/acm/contest/940/Akotori共有n块糖果,每块糖果的初始状态是分散的,她想把这些糖果聚在一堆。但她每次只能把两堆糖果合并成一堆。已知把两堆数量为a和b的糖果聚在一堆的代价是|a-b|。kotori想知道,她把这n块糖果聚在一堆的最小代价是多少?解:OEIS搜索序列前12个数,出来唯一一的结果,该序列介绍中...原创 2019-07-06 14:41:14 · 1302 阅读 · 0 评论 -
PTA A1020 Tree Traversals
#include<bits/stdc++.h>using namespace std;const int maxn=45;int in[maxn],post[maxn],Hash[maxn],n;//题目数据范围N<=30, Hash数组不能设成35!!! struct node{ int val; node* left; node* right; node(i...原创 2019-03-16 09:59:13 · 136 阅读 · 0 评论 -
迷宫 OpenJ_Bailian - 2790
dfs越来越清晰了#include<bits/stdc++.h>using namespace std;char a[105][105];int n,x2,y2;int flag;bool check(int x,int y){ if(flag||a[x][y]=='#'||x<0||y<0||x>=n||y>=n)return false;...原创 2019-01-19 14:55:53 · 172 阅读 · 0 评论 -
八皇后问题
趣学算法 n皇后问题#include<bits/stdc++.h>using namespace std;int n;//n表示n个皇后 int x[105];//x[i]表示第i个皇后放置在第i行第x[i]列 int countn;//countn表示n皇后问题可行解的个数 bool check(int t){//约束函数:判断第t个皇后能否放在第i个位置 boo...原创 2019-01-19 11:21:54 · 107 阅读 · 0 评论 -
三维dfs Serial Time! CodeForces - 60B
2019/01/19更新 重构#include<iostream>#include<cstring>using namespace std;int l,h,w,ans;char a[15][15][15];bool check(int z,int x,int y){ if(a[z][x][y]=='#'||z<0||x<0||y<0...原创 2018-12-26 13:15:58 · 232 阅读 · 0 评论 -
Red and Black POJ - 1979
2019/01/19更新 #include<iostream>#include<cstdio>#include<cstring>using namespace std;int w,h;char a[25][25];int ans=0;bool check(int i,int j){ if(a[i][j]=='#'||i<0||i>...原创 2018-12-26 11:47:15 · 155 阅读 · 0 评论 -
POJ-2386 Lake Counting
2019/01/19更新 学完书后重新写了一遍 感觉结构更清晰#include<iostream>#include<cstring>using namespace std;char a[105][105];int w,h; int ans;bool check(int i,int j){//隐约束(是否有可行解或最优解的约束) if(i<0||i...原创 2018-12-25 17:20:52 · 123 阅读 · 0 评论 -
dfs 求符合条件的集合 F - Equal Sum Sets UVALive - 6661
#include<iostream>using namespace std;int n,k,s,total,sum;void dfs(int sum,int x,int cnt){ if(sum>s) return; if(k==cnt&&sum==s){ total++; return; } for(int i=x+1;i<=n;i...原创 2018-12-28 17:29:35 · 101 阅读 · 0 评论 -
dfs 最小步数 OpenJ_Bailian - 3752 走迷宫
描述一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。输入第一行是两个整数,R和C,代表迷宫的长和宽。( 1<= R,C <= 40)接下来是R行,每行C个字符,代表整个迷宫。空地格子用'.'表示,有障碍物的格子用'#'表示。...原创 2018-11-28 15:15:27 · 367 阅读 · 0 评论 -
A strange lift HDU - 1548(Dijkstra/SPFA/BFS/DFS)
法一:Dijkstra+邻接表对于每一层,在它与它up和down可到的两个楼层间建边(down的楼层要大于0),权值为1,求最短路。(代码中注释的地方是默写模板时出错的地方,要特别注意)#include<bits/stdc++.h>using namespace std;typedef pair<int,int> PII;const int N=205,M...原创 2019-08-06 15:17:49 · 127 阅读 · 0 评论