青少年编程知识记录 codecoming

【贪心】----找零钱问题

一、找零钱问题例题1:有 1 元,5元,10元,20元,100元,200元的钞票无穷多张。现在使用这些钞票支付X元,最少需要多少张钞票。X = 628最佳支付方法:3张200块的,1张20块的,1张5块的,3张1块的共需3+1+1+3 = 8张直觉告诉我们:尽可能多的使用面值较大的钞票!贪心法: 遵循某种规律,不断贪心的选取当前最优策略的算法设计方法。分析:面额为1元、5元、10元、20元、100元、200元,任意面额是比自己小的面额的倍数关系。 所以当使用一张较大面额钞票时,若用较小面额钞票替
作者:亿万年的星光 分类:算法 浏览:

【贪心】----基本概念

一、基本概念所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性(即某个状态以后的过程不会影响以前的状态,只与当前状态有关。)所以,对所采用的贪心策略一定要仔细分析其是否满足无后效性。二、基本思路(1)建立数学模型来描述问题(2)把求解的问题分成若干个子问题(3)
作者:亿万年的星光 分类:算法 浏览:

【DFS】搜索回溯基础

0.前言       搜索与回溯是计算机解题中常用的算法,很多问题无法根据某种确定的计算法则来求解,可以利用搜索与回溯的技术求解。回溯是搜索算法中的一种控制策略。它的基本思想是:为了求得问题的解,先选择某一种可能情况向前探索,在探索过程中,一旦发现原来的选择是错误的,就退回一步重新选择,继续向前探索,如此反复进行,直至得到解或证明无解。如迷宫问题:进入迷宫后,先随意选择一个前进方向,一步步向前试探前进,如果碰到死胡同,说明前进
作者:亿万年的星光 分类:算法 浏览:

【高级篇】C++中的sort函数详解

0.简介sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#include<algorithm>的c++标准库中1.sort的参数sort(start,end,cmp)start:表示排序数组起始的位置end:表示排序数组结束的位置cmp:用于排序的方法,可以不填,不填默认升序2.数组中的用法#include<bits/stdc++.h&g
作者:亿万年的星光 分类:C++知识 浏览:

【排序】----插入排序

1.基本思想在要排序的一组数中,假定前n-1个数已经排好序,现在将第n个数插到前面的有序数列中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。2.过程·(1)从第一个元素开始,该元素可以认为已经被排序;·(2)取出下一个元素,在已经排序的元素序列中从后向前扫描;·(3)如果该元素(已排序)大于新元素,将该元素移到下一位置;·(4)重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;·(5)将新元素插入到该位置后;·(6)重复步骤2~5。动图演示:3.参考代码#include&
作者:亿万年的星光 分类:算法 浏览:

【排序】----选择排序

1.基本思想每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在待排序的数列最前,直到全部待排序的数据排完。2.过程首先初始化最小元素索引值为首元素。依次遍历待排序数列,遇到小于该最小索引位置处的元素则刷新最小索引为该较小元素的位置。直至遇到尾元素,结束一次遍历,并将最小索引处元素与首元素交换。·初始化最小索引值为第二个待排序数列元素位置,同样的操作,可得到数列第二个元素即为次小元素;以此类推。着重在于“选”动图演示:#include<iostream>using nam
作者:亿万年的星光 分类:算法 浏览:

【排序】----冒泡排序

1.基本思想两个数比较大小,较大的数下沉,较小的数冒起来。2.过程·每次比较相邻的两个数,如果第二个数小,就交换位置。(升序或降序)·然后两两比较,一直到比较最后的数据。最终最小(大)数被交换到开始(结束)位置,这样第一个最小(大)数的位置就排好了。·继续重复上述过程,依次将第2,3…n-1个最小数排好位置。动图过程:举例说明:【1 4 3 2】第一趟排序:第一次排序:1和4比较,1小于4,不交换位置。 【1 4 3 2】第二次排序:4和3比较,4大于3,交换位置。 【1 3 4 2】第三次排序
作者:亿万年的星光 分类:算法 浏览:

C++小游戏—贪吃蛇(1)

0.前言c++小游戏来到了第二个,第二个小游戏是贪吃蛇。首先来分析一下需求。我们需要一个函数专门来绘制地图的。在地图上随机生成“食物”。按键函数,用来监听键盘事件。蛇的状态函数。移动函数等。1.参考代码#include <cstdio>#include <cstdlib>#include <windows.h>//windows编程头文件#include <time.h>#include <conio.h>//控制台输入输出头文件#de
作者:亿万年的星光 分类:趣味小程序 浏览:

C++实现走迷宫小游戏

1.简单版本简单版本是利用字符数组实现的,利用字符数组设定入口和出口,用户每次按键就刷新一下当前字符数组。参考代码:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#include<conio.h>int main() {    char a[50][50] = { "######",   &
作者:亿万年的星光 分类:趣味小程序 浏览:

C++使用键盘控制物体移动

0.前言在前面几篇文章中,学习了键盘事件和光标移动,在这篇文章中,我们要使用键盘的上下左右键控制在控制台中出现的角色1.原理因为我们要通过移动键盘控制光标位置,那么在此之前需要提前获取到光标位置,然后再捕获键盘事件,根据按键给gotoxy函数参数,让光标移动到参数位置,然后刷新控制台,就可以实现“移动”的效果。2.获取光标当前位置函数通过下面这个函数可以获取到当前光标。void getXY()  {      HANDLE
作者:亿万年的星光 分类:趣味小程序 浏览: