算法,入门
文章平均质量分 65
Hormous的一天
这个作者很懒,什么都没留下…
展开
-
迭代的相关经验
迭代的核心思想就是赋值,接力赋值。 图例就是最为经典的迭代赋值求方程值。 迭代一般包括赋值,赋值。原创 2017-10-21 09:12:10 · 310 阅读 · 0 评论 -
快速幂的认识
其中要理解base*=base这一步,看:::base*base==base^2,下一步再乘,就是base^2*base^2==base^4,然后同理 base^4*base4=base^8,,,,,see?是不是做到了base-->base^2-->base^4-->base^8-->base^16-->base^32.......指数正是 2^i 啊,再看上 面的例子,a¹¹= a^(转载 2017-11-06 15:37:06 · 143 阅读 · 0 评论 -
快速排列在c++中的使用
#include #include #include using namespace std; struct date{ int x; int y; int z; }three[50005]; bool cmp(date a,date b) { if(a.x == b.x){ if(a.y == b.y)return a.z<b.z;原创 2017-11-07 15:15:09 · 193 阅读 · 0 评论 -
递推的专题竞赛
递推的推导错排公式编辑 当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用D(n)表示,那么D(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推. 第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法; 第二步,放编号为k的元素,这时有两种情况:⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个原创 2017-11-08 21:19:05 · 200 阅读 · 0 评论 -
RPG问题的妙解
/*Description 人称“AC女之杀手”的超级偶像LELE最近忽然玩起了深沉,这可急坏了众多“Cole”(LELE的粉丝,即"可乐"),经过多方打探,某资深Cole终于知道了原因,原来,LELE最近研究起了著名的RPG难题: 有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的转载 2017-11-09 18:44:50 · 402 阅读 · 0 评论 -
分治法的小感悟
#include int max(int a,int b) { if (a > b)return a; else return b; } int sumMax(int *a,int left,int right)//分治法的核心思想这里全都有。 { if (left+1 >= right)return max(a[left],a[right]); //1.第一步进行判断原创 2017-11-10 09:03:09 · 439 阅读 · 0 评论 -
贪心算法初识——对今年暑假不AC问题的两种理解
目前的贪心算法,我接触的有两种。 一今年暑假不Ac为例,我看到了两种算法。 题目:点击打开链接 首先,两种都是基于快速排列的: 按照节目时间结束的时间来从小到大来进行 排序的,如果结束的时间相等,那么就按照开始的 时间从大到小来排序。 因为结束的时间最早嘛,所消耗的时间也一定很少。 然后就进行排序,判断后一个的节目开始时,前一个节原创 2017-11-12 14:57:12 · 563 阅读 · 0 评论 -
错排。中的阶乘要注意不能超过20,不然longlong也救不了
#include int main() { int n,i; long long a[15]; a[1]=0; a[2]=1; for (i = 3;i < 15;i ++) a[i] = (i-1)*(a[i-1]+a[i-2]); scanf("%d",&n); while (n){ int m = n;原创 2017-11-12 21:09:54 · 941 阅读 · 0 评论 -
快速排列初识
快速排列的思想很牛逼 这里应该有非常丰富的解释:点击打开链接 //来一个快速排序。 #include void sort (int *a,int left,int right) { if (left >= right){ //如果左边索引大于等于右边的索引就代表已经整理完成了一个组了 return; } int i = lef原创 2017-11-01 21:41:43 · 171 阅读 · 0 评论 -
快速幂的数列递推
#include int main(void) { __int64 a,n,ans,m,t,i; scanf("%I64d",&t); for (i=1;i<=t;i++) { //简单的组数 scanf("%I64d",&n); //n是一个数 m=n; //先把m储存起原创 2017-11-05 10:31:26 · 277 阅读 · 0 评论 -
冒泡函数 和 选择排序
#include using namespace std; int main() { int a[10] = {9,8,7,6,5,4,3,2,1,0}; int temp; for (int i = 0;i < 10;i ++){ for (int j = 9;j > i;j --){ if (a[j] < a[j-1]){原创 2017-10-18 20:00:54 · 800 阅读 · 0 评论 -
插入排序,简单认识
#include void InsertionSort (int a[],int size){ for (int i = 1;i < size; i++){ //a[i]是最左的无序元素,每次循环将a[i]放到合适位置。 for (int j = 0;j < i; j++) if (a[j] > a[i]){ // 要把a原创 2017-11-21 15:31:35 · 136 阅读 · 0 评论