【算法日记 four】教程文章相关的互联网学习教程文章

poj 1274(最大匹配,匈牙利算法,注意数据污染!)【代码】

#include<iostream> #include<cstdio> #include<cstring> usingnamespace std; int data[205][205],link[205],visit[205],count,n,m; bool dfs(int x){for(int j=1;j<=m;j++){if(data[x][j]&&!visit[j]){visit[j] = 1;if(link[j]==0||dfs(link[j])){link[j] = x;returntrue;}}}returnfalse; } void hungery(){for(int i=1;i<=n;i++){memset(visit,0,sizeof visit);if(dfs(i)){count++;}} } int main(){int i,j,p,q;while(scanf("%d...

HDU1548——A strange lift(最短路径:dijskstra算法)【代码】

A strange liftDescriptionThere is a strange lift.The lift can stop can at every floor as you want, and there is a number Ki(0 <= Ki <= N) on every floor.The lift have just two buttons: up and down.When you at floor i,if you press the button "UP" , you will go up Ki floor,i.e,you will go to the i+Ki th floor,as the same, if you press the button "DOWN" , you will go down Ki floor,i.e,you will go to ...

生理周期 枚举算法问题

趁着寒假抓紧自学C++.....生理周期问题是比较简单的算法问题,运用到了 枚举 的思想。 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为 23 天、28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。 ...

php概率算法【代码】【图】

这是一个很经典的概率算法函数:function get_rand($proArr) { $result = ‘‘; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as $key => $proCur) { $randNum = mt_rand(1, $proSum); //抽取随机数 if ($randNum <= $proCur) { $result = $key; //得出结果 break; ...

php算法

1、首先来画个菱形玩玩,很多人学C时在书上都画过,咱们用PHP画下,画了一半。思路:多少行for一次,然后在里面空格和星号for一次。123456<?phpfor($i=0;$i<=3;$i++){ echo str_repeat(" ",3-$i); echo str_repeat("*",$i*2+1); echo ‘<br/>‘;}2、冒泡排序,C里基础算法,从小到大对一组数排序。思路:这题从小到大,第一轮排最小,第二轮排第二小,第三轮排第三小,依次类推……12345678910111213<?php$arr = array(1,3,5,32...

原子变量与CAS算法【代码】【图】

上一节讨论了 volatile关键字,volatile关键字修饰的作用是不具有 "原子性" 和 "互斥性的"例如 i++ 操作 就不是一个原子性的操作,i++ 其实分为3个步骤进行 "读-改-写"int temp = i;i = i + 1;i= temp;先看一段代码:package com.java.juc;publicclass TestAtomicDemo {publicstaticvoid main(String[] args) {AtomicDemo ad = new AtomicDemo();for(int i = 0;i<10;i++){new Thread(ad).start();}} }class AtomicDemo implements ...

算法第3章作业

1.对动态规划算法的理解:动态规划算法的基本思想同分治法类似,即将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解中得到原问题的解。与分治法不同的是,这若干个子问题不是相互独立的,而是有交集的,如果用分治法的思想去解决的话,会因为重复操作而浪费时间,所以需要采用动态规划的思想。动态规划可分为四步:1.找出最优解的性质,刻画其结构特征;2.递归定义最优值;3.以自底向上的方式计算最优值;4.根...

[BZOJ3781]:小B的询问(莫队算法)【代码】

题目传送门题目描述小B有一个序列,包含$N$个$1~K$之间的整数。他一共有$M$个询问,每个询问给定一个区间$[L...R]$,求$\sum \limits_{i=1}^{K}c(i)^2$的值,其中$c(i)$表示数字$i$在$[L...R]$中的重复次数。小$B$请你帮助他回答询问。输入格式第一行,三个整数N,M,K。第二行,N个整数,表示小B的序列。接下来的M行,每行两个整数L,R。输出格式M行,每行一个整数,其中第i行的整数表示第i个询问的答案。样例样例输入6 4 31 3 2 1 1...

Quick Sort 快速排序算法【代码】

Table of Contents前言算法步骤选取枢纽元分割数组算法实现小数组和插入排序结语前言快速排序算法应该是常见的排序算法中使用的最多的一个,很多语言内置的排序算法都间接或直接的使用了这一算法。因此,我们是很有必要学习快速排序算法的。算法步骤在了解详细的算法步骤之前可以先来看一下快速排序算法的算法复杂度:时间复杂度(平均)时间复杂度(最坏)空间复杂度$O(nlog_2n)$$O(n^2)$$O(1)$通过快速排序算法的算法复杂度我们可...

编程算法 - 快速排序(QuickSort)和二分查找(BinarySearch)【图】

快速排序(QuickSort)和二分查找(BinarySearch)本文地址: http://blog.csdn.net/caroline_wendy快速排序和二分查找的定义, 网上书上都有, 本文主要是讲解如何写出这两个经典算法.程序员必须掌握的两种算法, 使用任何语言, 使用纸都是必须的.快速排序(C):/** main.cpp** Created on: 2014年9月10日* Author: Spike*/#include <stdio.h> #include <stdlib.h> #include <iostream> #include <exception>int RandomInRange(int st...

动态规划算法之:最长公共子序列 & 最长公共子串(LCS)

1、先科普下最长公共子序列 & 最长公共子串的区别:找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。2、最长公共子串其实这是一个序贯决策问题,可以用动态规划来求解。我们采用一个二维矩阵来记录中间的结果。这个二维矩阵怎么构造呢?直接举个例子吧:"bab"和"caba"(当然我们现在一眼就可以看出来最长公共子串是"ba"或"ab")   b  a  bc  0  0  0a  0  1  0b ...

余数算法【代码】

一筐鸡蛋:1个1个拿,正好拿完。2个2个拿,还剩1个。3个3个拿,正好拿完。4个4个拿,还剩1个。5个5个拿,还剩4个。6个6个拿,还剩3个。7个7个拿,正好拿完。 8个8个拿,还剩1个。 9个9个拿,正好拿完。问筐里最少有多少鸡蛋?先简化算法:第一个条件忽略,是8的倍数一定是4的倍数,也一定是2的倍数是9的倍数一定是3的倍数,是3的倍数,而且是奇数,被6除一定余3, 所以,可以归纳为:5个5个拿,还剩4个。7个7个拿...

23、查找算法-插值法查找【代码】

来源:https://www.bilibili.com/video/BV1B4411H76f?p=77一、思路插值法查找:序列还是需要有序,思路跟二分法是一致的,但是寻找中间坐标mid的方法不同。对于二分法mid=1/2(low+high)=low+1/2*(high-low)插值法中mid的求法是这样的:mid=low+((finalVal-arr[low])/(arr[high]-arr[low]))(high-low)利用目标值finalVal的大小,大体确定一下它的位置例如:一个1-100的数组,要找1那二分法:mid = 0+1/2(99-0)=49,从49开始找插值法:...

算法:计算十进制数字在二进制表示1的个数【代码】

题目一计算十进制数字在二进制表示 1 的个数举个例子:十进制数字为 1 时,它的二进制表示是 001,二进制表示 1 的个数为 1;十进制数字为 2 时,它的二进制表示是 010,二进制表示 1 的个数为 1;十进制数字为 3 时,它的二进制表示是 011,二进制表示 1 的个数为 2;十进制数字为 4 时,它的二进制表示是 100,二进制表示 1 的个数为 1;十进制数字为 5 时,它的二进制表示是 101,二进制表示 1 的个数为 2;十进制数字为 6 时,它...

HDU 2586 How far away LCA的离线算法 Tarjan【代码】

链接:How far away ?Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11204 Accepted Submission(s): 4079Problem DescriptionThere are n houses in the village and some bidirectional roads connecting them. Every day peole always like to ask like this "How far is it if I want to go from house A to house B"? Usually it hard to answer. But luckily...