2016SDAU课程练习二
WiseDoge
未来的IT民工
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1003
概述:给出n个蛋糕的半径,还有m+1个人,每个人的馅饼必须是整块的,不能拼接,求最大的。思路:所以直接在最大那块的面积与0之间二分求即可。(注:PI的值要尽量精确)感想:有点难啊。#include #include #include const double PI = 3.14159265358979323849;const double P = 1e-6;using nam原创 2016-04-05 21:55:06 · 700 阅读 · 0 评论 -
1002
概述:给定一个函数 Z=f(x,y),单调性未知,给定y,求Z的最小值思路:对函数求导得到单调性,根据单调性确定取最小值时的条件。感受:做这道题的时候要学会转变思路,对于单调性不明的函数要求导。#include#include#includeusing namespace std;inline double f(double x, double y){ return 6 *原创 2016-04-05 21:50:00 · 439 阅读 · 0 评论 -
1001
概述:给定一个函数y=f(x),给定y的值,在1-100的范围内,求x的值。思路:二分搜索即可。感想:无。#include#include#includeusing namespace std;inline double f(double x){ return 8 * pow(x, 4) + 7 * pow(x, 3) + 2 * pow(x, 2) + 3 * x + 6原创 2016-04-05 21:45:38 · 597 阅读 · 0 评论 -
1016
概述:Red and Black ,给出一个 W 乘 H 的矩阵,矩阵中有 . # @三种元素,你从@出发,可以上下左右走,只能走# ,问能经过的 # 的数量思路:DFS,从@ 开始,向上下左右四个方向分别递归,并再那四个方向的基础上再分出四个方向递归,以此类推,当遇到 不符合条件的点或者墙时,舍掉,最后,将所有的步数加到一起即可,感想:做这种题最重要的是找出递归的规律,并且还要找出排除的原创 2016-04-10 16:36:14 · 494 阅读 · 0 评论 -
1020
概述:质数环问题,输入一n,求出从一开始,将[1:n+1]排列,并连成一个环,要求环任意两个元素的和为质数,列出所有的组合,思路:DFS问题,从1开始,找出下一个+1为质数的数,再以此类推,直到最后一个数,并且还要保证最后一个数加上1也是质数,如果中途出现无法继续找的情况,就将这次舍掉,从新找出下一个组合,直到将所有的组合遍历完为止。感想:难度大大的!!!!!#include#inc原创 2016-04-10 16:47:35 · 443 阅读 · 0 评论 -
1023
概述:输入8个数 表示 图中a b c d e f g h的位置的值只能为1-8的数 然后相邻的不能是连续的数 即绝对值不能为1 有些数是0 将为0的填成1-8中未使用的数有多少种方法 如果仅有一种 输出它 有多种输出 Not unique,没有输出No answer。思路:典型的DFS,思路比较单调,但是一一对应的关系比较复杂,这里我找到了一张网上的关系图,可供参考。转载 2016-04-19 08:27:16 · 416 阅读 · 0 评论 -
1026
概述:数独游戏,给你一个数独游戏盘,让你求解思路:把数字1-9填写到空格当中,并且使方格的每一行和每一列中都包含1-9这九个数字。同时还要保证,空格中用粗线划分成9个3x3的方格也同时包含1-9这九个数字。这样的话,很容易就联想到DFS搜索,所以,我们采取搜索,遇到“?”就尝试求解。感想:不是很难- =#include#include#include#include#inclu原创 2016-04-23 14:37:08 · 365 阅读 · 0 评论 -
1006
概述:给你两条直线和走在两条直线上的速度,以及横穿两条直线的速度,让你求出从一条直线的下端,到另一条直线上端所需要的最短时间思路:此题的本意是考察三分搜索,但是公式的确定也很重要。我们从一点开始,向上慢慢试即可。感想:算法和数学的关系真的很大!!#include#includedouble p,q,rr;struct Point{ double x,y;};dou原创 2016-04-23 14:44:28 · 399 阅读 · 0 评论 -
1009
概述:在一个棋盘中,放了很多的棋子。如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子),而且线的转折次数不超过两次,那么这两个棋子就可以在棋盘上消去。并且,棋子不能在棋盘外面走,你要做的是,给你一盘棋,请你判断给定的两个棋是否能消除。思路:DFS,搜的过程要合理的“剪枝”,否则会超时,搜的时候,遇到不是同种的,或者都是0之类的可以直接PASS掉,以节约时间。感想:不是特别原创 2016-04-23 15:14:31 · 565 阅读 · 0 评论 -
1011
非常经典的DFS题目。#include#include#includeusing namespace std;int m, n;const int MAX = 500;const int dir[8][2] = { { -1,0 },{ 1,0 },{ 0,1 },{ 0,-1 },{ -1,-1 },{ -1,1 },{ 1,-1 },{ 1,1 } };char chess[原创 2016-04-05 22:02:55 · 505 阅读 · 0 评论 -
1017
概述:大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S思路:BFS求解,题目不难,但是十分的冗杂,做起来很费事,我参考了课件和其他人的代码才能写出来。感想:烦原创 2016-04-08 22:05:13 · 332 阅读 · 0 评论 -
1008
思路:最优就是按2^n-1猜#include#includeusing namespace std;int main(){ int sum,n; cin >> sum; while (sum--) { cin >> n; long long max = pow(2, n) - 1; cout << max << endl; } return 0;}原创 2016-04-05 21:58:18 · 392 阅读 · 0 评论 -
1015
概述:国际象棋中的马和中国象棋的马一样都是走 日,现给定马的初始位置,和另一个坐标,问马最少走几步可以到达终点。思路:典型的BFS问题,分析可知,马可以走八个方向,所以把这八个方向分别表示出来,并入队,然后从队列中抽取元素,再模拟出它的八个方向,再次入队,以此类推,每次取出元素的时候,也要做一下检验,只要与终点相吻合,就结束循环。感想:和上课讲的一模一样!!!#include #in原创 2016-04-12 15:17:03 · 509 阅读 · 0 评论 -
1024 & 1025
概述:给出一行数,求给定个数的递增子串。思路:DFS,没啥说的。感想:无。#include #include #include #include using namespace std;int n, p, len, Count;int num[1001];bool flag;struct Tem{ int n, pos;};Tem tem[1001];b原创 2016-04-08 21:08:38 · 741 阅读 · 0 评论 -
1004
概述:一支箭从原点以速度V发射,发射角任意,对于给定点(x,y),求这只箭能否射中该点,如果能射中,输出射中时的最小仰角,否则,输出-1.思路:如果射的箭能够达到点(x,y)且到达的角度最小,那么到达这个点的竖直方向上的速度必然是0,将速度分解为Vx和Vy,用x/Vx求出时间t,再用t求出Y,与y来比较,如果Y==y时,输出,求解的过程是一个二分的过程。感想:看来学好高中物理很重要。#原创 2016-04-08 21:02:11 · 674 阅读 · 0 评论 -
1005
概述:一辆车要转弯,给出以下条件,问是否能转过弯。思路:要使汽车能转过此弯道,那么就是汽车的左边尽量贴着那个直角点,而汽车的右下后方的点尽量贴着最下面的边。感想:学好高中物理很重要。#include #include #include #include const double PI = 3原创 2016-04-08 21:16:32 · 351 阅读 · 0 评论 -
1019
概述:非常经典的八皇后问题,输入皇后数,求解。思路:DFS。感想:有幸用C++写一次八皇后。#include#include#include#includeusing namespace std;const int MAX = 12;int queen[MAX];//棋盘int ans;//解的个数bool check(int x)//检查{ for (int i原创 2016-04-08 22:02:24 · 603 阅读 · 0 评论 -
1013 & 1014
概述:楼梯可UP可DOWN,每个楼层上都标有一个数字X,每次只能UP或者DOWN X个单位,给定一个起始位置和一个终止位置,求起始位置到终止位置所需的最小步数。思路:DFS,没啥好说的。感想:无。#include #include #include using namespace std;const int MAX = 300;int f[MAX];bool visit[M原创 2016-04-05 22:06:38 · 600 阅读 · 0 评论 -
练习2——搜索总结
原来对DFS的理解仅仅局限于图,现在发现这只是最基础的。DFS更多的表示的是一种状态,然后利用某中很简单的思维进行一次次的尝试,每次尝试成功了,就深入一层递归进行下一次尝试,直到之后的尝试表明已经失败了不会成功,则回溯到这里。取消这次的尝试,去尝试其他的操作。简单地说,就是暴搜。只不过利用了递归来实现尝试失败时的回溯,从而进行新的尝试。原创 2016-04-23 15:58:27 · 618 阅读 · 0 评论
分享