随笔分类 - OJ
摘要:之前写过一个数字的稍作修改便可以AC,对于题目要求以文本结束则结束程序需要输入不为EOF即可。
阅读全文
摘要:题目难点在于对两片雪花的比较,哈希可以加快搜索速度,防止超时,而对于如何逆时针和顺时针比较雪花是否相同便成为重点。 在这里给出两条公式: 设i为A、B的第i片叶子,j为B当前顺时针转过的格数 那么 A(i) > B( (i+j)%6 ) 设i为A、B的第i片叶子,j为B当前逆时针转过的格数 那么 A
阅读全文
摘要:#include using namespace std; typedef struct Node{ int info; Node * link; }Node; typedef struct LinkStack{ Node * top; }LinkStack; int push(LinkStack * stack, int x){ Node * p = new Node; p-...
阅读全文
摘要:#include using namespace std; #define MAX 101 int data[MAX][MAX]; int n; int maxSum[MAX][MAX]; int main(){ cin>>n; for(int i=1;i>data[i][j]; for(int i=1;i=1;i--) for(int j=1;j=maxSum[i+1][j+1...
阅读全文
摘要:思路:题目是很简单的DFS。求出能走到的"."。因此我们完全不需要回溯,只需要遍历下去,每递归一次则结果+1,最后得出答案。
阅读全文
摘要:思路:深度搜索全排列,将每两个相连的结果做成表格,得出最小。
阅读全文
摘要:题目大意:有一个4*4的方格,每个方格中放一粒棋子,这个棋子一面是白色,一面是黑色。游戏规则为每次任选16颗中的一颗,把选中的这颗以及它四周的棋子一并反过来,当所有的棋子都是同一个颜色朝上时,游戏就完成了。现在给定一个初始状态,要求输出能够完成游戏所需翻转的最小次数,如果初始状态已经达到要求输出0。
阅读全文
摘要:在正方形的矩阵中,可以向8个方向移动,给出起点和终点,求出最快到达终点的步数。
阅读全文
摘要:题目数据范围10000,因此简单的DFS会超时,所以要格外注意剪枝。 1.半径r,与高h都从n+1,开始搜索。 2.当前的表面积,加上之后层的预估最小表面积,若大于最优解,减掉。 3.当前的体积,加上之后层的预估最小体积,若大于最优解,减掉。 4.DFS中,若体积超出限制n,则减掉。 5.(目前体积
阅读全文
摘要:如果想在DFS过程中计算油田个数会很麻烦,所以要简化思想。我们可以把每一个油田当成一次DFS(只对"@"的进行DFS,这样每当DFS退出时,表示一块油田搜索完毕 ),这样每次DFS后油田数加一,最后输出结果。
阅读全文
摘要:这道题目的难点是理解最多有2^16次方种可能,需要理解每个棋子只能翻一次或者不翻。这么这道题目就可以用DFS暴力解决!
阅读全文
摘要:这是我第一次遇到的BFS问题,因为要学习编程,F同学帮我找了一些搜索的题目,做到这个问题的时候感觉无法使用DFS来写,因为他可能是个无底洞。因为当时没有学习过BFS,所以网上搜索了下发现了也是一位第一次碰到BFS题目就是C - Catch That Cow的博主,学习了他的代码,他的代码解释很清楚。
阅读全文
摘要:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 input 输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将
阅读全文