这个题目的目的主要是让我们熟悉POJ这个平台是怎么使用的,第一个题目1000的解答过程如下: #include <stdio.h> int main() { int a,b; scanf("%d %d",&a, &b); printf("%d\n",a+b); return 0; } 这段C程序既能 ...
分类:
其他好文 时间:
2020-06-21 15:52:12
阅读次数:
40
题目链接:http://poj.org/problem?id=1077 使用A*搜索中的估价函数要小于等于真实值才能更快的收敛,本题中已经花费的开销是从start状态到目前状态的花费,也就是dist,可以将字符串映射到一个整数表示开销,如果在hash中没有这个键则表示 这个state并没与进入过队列 ...
分类:
编程语言 时间:
2020-06-21 15:35:50
阅读次数:
54
题目链接:http://poj.org/problem?id=3322 这题并不难,理解了状态空间的纬度就很容易实现,其中状态是坐标、躺着的起始位置,躺着的形式。 搜索题目比较考验写代码的能力。 代码: #include<iostream> #include<cstdio> #include<que ...
分类:
编程语言 时间:
2020-06-20 10:36:25
阅读次数:
50
题目链接:http://poj.org/problem?id=1190 剪枝的常用思考策略:优化搜索顺序(从决策数量越少的位置开始决策)、排除冗余的等效的操作、可行性剪枝、最优性剪枝、上下界剪枝,其中在可行性剪枝方面可以利用“未来期望进行剪枝” 要充分利用不等式关系进行放缩,将不可能的状态进行剪枝, ...
分类:
编程语言 时间:
2020-06-19 16:36:53
阅读次数:
62
地址 http://poj.org/problem?id=1258 Sample Input 4 0 4 9 21 4 0 8 17 9 8 0 16 21 17 16 0 Sample Output 28 解答 根据题目的输入格式 还是使用prim比较好 #include <iostream> # ...
分类:
其他好文 时间:
2020-06-19 13:48:51
阅读次数:
41
题目链接:http://poj.org/problem?id=2442 给定一个M*N的矩阵,要求从每一行中都取出一个数然后累加,问最小的N个累积和为多少。使用堆可以在O(MNlogN)时间复杂度内求出。 M行的最大取法一定是通过前M-1行的最大取法+第M行取数然后求前N大获取的,所以有归纳法可以考 ...
分类:
编程语言 时间:
2020-06-18 13:19:12
阅读次数:
67
题目: 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜 ...
分类:
其他好文 时间:
2020-06-18 13:05:17
阅读次数:
45
题目链接:http://poj.org/problem?id=3764 我们可以在O(32*n)时间内求出一个长度为n的序列中取两个数的最大异或,而树中的异或有如下公式:path[x]=path(root,x) xor path(root,y),所以处理出path(root,i)之后就简化成了 简单 ...
分类:
编程语言 时间:
2020-06-18 10:41:11
阅读次数:
56
题目链接:http://poj.org/problem?id=1961 通过next数组求字符串截止到i位置的最小循环节以及循环次数,可以在O(N)时间内得出,通过这个方法可以求得字符串的任意长度的循环节。 代码如下: #include<iostream> #include<cstdio> usin ...
分类:
编程语言 时间:
2020-06-17 18:07:49
阅读次数:
51
题目链接:http://poj.org/problem?id=2559 典型问题,就是有一个地方要注意,用数组模拟栈的时候要判断栈是否为空才能弹出元素,否则的话,设置一个st[0]=-1,这样矩形高度是0的时候就会自动判断栈空。 代码如下: #include<iostream> #include<c ...
分类:
编程语言 时间:
2020-06-17 10:56:19
阅读次数:
54