(一)问题描述电影评分,下图中5部电影,4个人进行评分,评分从0-5,并且为整数,问号处表示没有评分。(二)基于内容的推荐系统给每部电影添加两个features,针对这个问题中分别为romatic和action,范围为1-5,并且给出一部电影这两个参数就已知。这里设,每部电影由xi表示,xi为一个3*1的向量,第一个x0为截距1,第二个为romantic指数,第三个为action指数。每个人的评分也由一个3*1的向量表示,第二个和第三个分别表示每个人对r...
和谐子序列的定义和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1,也就是说我们需要找出比该元素大于或者相等的元素LeetCode 题目:给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度题目示例:输入: [1,3,2,2,5,2,3,7]
输出: 5
原因: 最长的和谐数组是:[3,2,2,2,3].解法一:暴力枚举法暴力枚举的思想很简单,也是我们常用的方法,就是双重遍历数组,第一层遍历是枚举数组中的每一个元素并...
一 Dijkstra算法 Dijkstra算法解决了有向图G=(V, E)上带权的单源最短路径问题,但要求所有边的权值非负。Dijkstra算法采用贪心策略。 最短路径的最优子结构:最短路径的子路径是最短路径。 除了邻接表外还有3个数组,当前最短距离distance,前趋顶点pre,是否已访问过顶点(即已确定好最短路径的顶点)visited。 假设单源顶点为srcIdx,则Dijkstra算法步骤如下: ① 初始化:distance设置为INT_MAX,pre设置为-1,vis...
最近学习了python,看得懂,但真不愿意写python的代码。我想了想,java是我的专业和强项,我为什么要抛之而顾它呢,自己也不感兴趣我在自己的领域做到专业就行了,别人的领域让别人去搞吧先一技之长,再言其它小母牛的算法题,我的头脑一向不灵活 ,算法更甚,但不妨碍我喜欢呀农场有牛小母牛每年生头小母牛母牛五岁产母牛几年农场多少母牛?这是小学生的题目,如果列出来,找出规律,我相信现在的小朋友们应该都会的。但是我的智商...
//
// main.c
// 选择排序
//
// Created by king on 15/10/20.
// Copyright ? 2015年 king. All rights reserved.
//#include <stdio.h>int main(int argc, const char * argv[]) {// 定义数组int array[5] = {23, 56, 36, 89, 50};// 计算数组长度int length = sizeof(array) / sizeof(array[0]);// 遍历数组(无序)for (int i = 0; i < length; i++) {printf("array[%d] = %d\n", i, array[i]);}printf("------------------...
遗传算法1.简要概述在几十亿年的演化过程中,自然界中的生物体已经 形成了一种优化自身结构的内在机制,它们能够不 断地从环境中学习,以适应不断变化的环境。对于大多数生物体,这个过程是通过自然选择和有性生殖来完成的。自然选择决定了群体中哪些个体 能够存活并繁殖,有性生殖保证了后代基因的混合 与重组。演化计算(Evolutionary Computation, EC)是在达尔文(Darwin)的进化论和孟德 尔(Mendel)的遗传变异理论的基础上产...
《算法导论》第二版中在讨论斐波那契堆之前还讨论了二项堆,但是第三版中已经把这块的内容放到思考题中,究极原因我想大概是二项堆只是个引子,目的是为了引出斐波那契堆,便于理解,而且许多经典的算法实现都是基于斐波那契堆,譬如计算最小生成树问题和寻找单源最短路径问题等,此时再把二项堆单独作为一章来讲显然没有必要。类似的堆结构还有很多,如左倾堆,斜堆,二项堆等,下次我打算开一篇博客来记录下它们的异同点。一、摊...
1. 题目描述/*
题目描述给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
输入描述:输入一个数n,意义见题面。(2 <= n <= 60)示例1
输入 8
输出 18
*/ 代码1:贪心算法(最简单)思路/*** 题目分析:* 先举几个例子,可...
【题目链接】 A - 逆序数经典问题,有很多方法,例如树状数组,线段树,归并排序等。代码不贴了。 B - Big Water Problem单点修改求区间和,树状数组或者线段树都可以。#include <bits/stdc++.h>
using namespace std;const int maxn = 1e5 + 10;
long long c[maxn];int lowbit(int x) {return x & (-x);
}long long sum(int p) {long long res = 0;while(p) {res += c[p];p -= lowbit(p);}return res;
}void update(int x, long l...
习题8.6 生成一条比观察窗口对角线还长的线段动画,线段重点位于观察窗口中心,每一帧的线段在上一帧基础上顺时针旋转一点,旋转后用Cohen-Sutherland线段裁剪算法进行裁剪。步骤:1 视口范围:(-100, -100)到(100, 100);2 裁剪窗口区域:winMin(-50, -50) 到 winMax(50, 50),原始端点:p0(-100, 0)到 p1(100, 0)3 使用Bresenham算法画原始线段,使用Cohen-Sutherland算法画裁剪线段;4 theta += delta,其中 ...
本来想写完递归再写这个专栏的,但是老师给了一个贪心的题目,没办法只能开一个板块了简介在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。与这个局部最优解相对应的全局最优解会在动态规划里面展现出来。例题先来一道经典的贪心热热手,跳跃游戏就算是一个比较经典的贪心题思路一开始看到这个题目不知不觉开始用动态规划在写了 (°ー°〃)仔细一看返回值...
数三退一问题是,有一圈孩子,手拉手围成一个圈,从第一个孩子开始数1,第二个孩子数2,第三个孩子数3,这时候数3的孩子退出,从下一个孩子开始数1,一直循环,直到最后剩下一个孩子,问这个孩子的位置?两种解题思路,一种是将这一组小孩看成一个数组(假设有500个数组),每个元素为boolean型,初始时所有的元素为true,然后开始循环数数,判断剩下元素是否大于1,首先判断元素是否为true,true则继续数,每次数到3时,记录剩下元素...
1、题目 – Sqrt(x)Implement int sqrt(int x).Compute and return the square root of x.题目意思很简单,就是求出x的平方根。分析:一看这题目,感觉很简单,很容易想到的是二分法,我最开始的解法是从1、2、4、8 … 2 * n,计算出n < x < 2n,然后再在 n 和 2n间,用二分法,找到平方根结果。这种方法比较麻烦的一点是,乘积是有可能越界的,要处理乘积越界的情况,代码可读性不强。class Solution {
public:int sqrt(int x) {i...
权当数据结构与算法分析的学习手记 系数为一的幂级数部分和公式∑ n2 = 12 + 22 + 32 + ... + n2 = n(n+1)(2n+1)/6 = O(n3)∑ n3 = 13 + 23 + 33 + ... + n3 = n2(n+1)2/4 = O(n4)∑ n4 = 14 + 24 + 34 + ... + n4 = n(n+1)(2n+1)(3n2+3n-1)/30 = O(n5) 调和级数与对数级数调和级数: 1+1/2+1/3+1/4+...+1/n = ⊙(log n)对数级数: log1+log2+log3+...logn = log(n!) = ⊙(nlog n) 收敛级数一般都为O(1)例如:1+1/22+1/32+1/42+.....
7. write a function cn random an array.publicclass xiaodan_random {Random rand = new Random();publicvoid swap(int[] array, int i, int j){int buf = array[i];array[i] = array[j];array[j] = buf;}publicvoid random(int[] array){for(int i=0; i<array.length; i++){int ran = rand.nextInt(array.length);// System.out.println("this random number == "+ ran); swap(array,i,ran);}}publicstaticvoid main...