自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 八皇后问题

在8*8格的国际象棋上摆放八个皇后,即任意两个皇后都不能处于同一行、同一列或同一斜线上,求解排列方法#include#includeusing namespace std;int count1 = 0;int Q[8];void EightQuene(int n){ //cout << "进入主程序 " << n << endl; if (n == 8) { cou

2017-10-17 20:13:35 214

原创 马踏棋盘算法

在一个8*8象棋棋盘中,定义马的起始位置,如何让马踏遍整个棋盘使用递归求解,从起始位置开始,往其四周可去的点行走,走到之后,再以到达点为起始点再向四周可去点走,直到走完#include#includeusing namespace std;#define wei 8 //定义棋盘维度typedef struct point //棋盘上的点{ int x; int y;}

2017-10-17 16:25:09 703 1

原创 汉诺塔问题-递归 -mobai_dalao

汉诺塔问题:汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。(摘自汉诺塔问题的百度百科词条)使用递归法求解使得此问题非常简单:设想有一个盘

2017-10-16 21:48:49 371

原创 复杂约瑟夫环 - mobai_dalao

简单约瑟夫环:约瑟夫环:若干人围成一个环,约定每间隔n个人,第n个人离开,剩下的人继续,直至所有人离开,输出离开顺序。简单约瑟夫环使用数组即可实现。复杂约瑟夫环:每个人都持有一个独立的间隔值x,比如第一个人的间隔值x1为3,那么从第一个人开始往后数3,第三个人离开,此时,以第三个人的间隔值x3作为新的间隔值,继续下去。#include#include#inclu

2017-10-16 14:53:15 326

原创 简单约瑟夫环 -mobai_dalao

约瑟夫环:若干人围成一个环,约定每间隔n个人,第n个人离开,剩下的人继续,直至所有人离开,输出离开顺序。简单约瑟夫环使用数组即可实现。//简单约瑟夫环#include#includeusing namespace std;void ysf(int *a, int n){ int i = n; int k = -1, j = 0; while (i >= 1) {

2017-10-16 14:50:58 231

原创 堆排序

#include#include#define SIZE 10using namespace std;void HeapSort(int a[], int n){ int i, j, k, h; int t; for (i = n / 2 - 1; i >= 0; i--) { while (2*i+1<n) { j = 2 * i + 1; if ((j

2017-10-15 19:23:49 156

原创 快排 - mobai_dalao

//快排#include#includeusing namespace std;void QuickSort(int *a, int l, int r){ int lt = l, rt = r; int md = (l + r) / 2; int f = a[(l + r) / 2]; //int mid = a[md]; while (lt < rt) { while

2017-10-15 17:29:21 188

原创 Sheel 希尔排序 -mobai_dalao

#include#includeusing namespace std;void ShellSort(int *a, int n){ int r, temp; for (r = n / 2; r >= 1; r /= 2) { for (int i = r; i < n; i++) { temp = a[i]; int j = i - r; cout <

2017-10-14 23:53:42 186

原创 插入排序

插入排序:从第二个数开始,将每个数插入到前面合适的位置(往前移动),即前面保持有序,后面每个数依次插入到前面有序的数组,直至到最后一个数。插入过程采用使用临时变量保存当前待插入元素,将前面大于该待插入元素的数往后挪,腾出合适的插入位置,将待插入元素插入。//插入排序#include#includeusing namespace std;void InsertSort(int *

2017-10-14 19:47:13 125

原创 选择排序 - mobai_dalao

//冒泡排序#include#includeusing namespace std;void SelectSort(int *a, int n){ int k,temp; for (int i = 0; i < n; i++) { k = i; for (int j = i + 1; j < n; j++) if (a[k] > a[j]) k = j;

2017-10-14 18:14:58 166

原创 蒙特卡罗算法求圆周率 π - mobai_dalao 的博客

如上图,圆为单位圆,面积为 π*r*r = π ,阴影部分为单位圆的四分之一,面积即为 π/4右上角的正方形框面积为1像右上角的正方形框中均匀撒点,假设撒n个,落入阴影区域的点的个数为x个,当样本足够多,即n足够大时x/n无线接近于 π/4由此法求解圆周率及为蒙特卡罗求解π算法的主要思想代码如下:#include#include#includeusing n

2017-10-14 17:21:52 1694

原创 分治法找假币

所谓分治法,就是将复杂而麻烦的大问题分解为一个个计算量比较小的小问题,通过求解小问题,而最终得到大问题的解问:有n个硬币,其中有一个假币质量较轻,通过一个天平将假币挑出答:将假币分成两份去称,轻的那一半包含假币,将轻的那一半又分为两份,接着称,直到剩下最后两枚,轻的那一枚即为假币tip:考虑到硬币个数为奇数的情况,照样分为两半,剩下一个多余的,如果两半等重,多余的那枚即为假币,否则继续

2017-10-14 16:46:15 6163 2

原创 递归求阶乘

n!=n*(n-1)*(n-2)*...*1;0!=1;#include#includeusing namespace std;int Jiechen(int n);int main(){ int n; cin >> n; cout << Jiechen(n); system("pause"); return 0;}int Jiechen(int n){

2017-10-14 15:31:45 295

原创 求解斐波拉契数列

斐波拉契数列:1,1,2,3,5,,,从第三个数开始,每个数是前两个数之和求解第N个数的值。求解过程用到递归思想,即第N个数的值等于第N-1个数的值加上第N-2个数的值,同理可求N-1与N-2的值递归问题有两个要点:递推公式和返回条件,地推公式即每个数是其前两个数之和只有递推公式而无返回条件,递归会一直不停进行下去,程序奔溃,所以必须要有返回条件结束递归本题中易

2017-10-14 15:21:53 625

原创 穷举法求解鸡兔同笼问题

#include#includeusing namespace std;int main(){ //int heads = 23, feet = 60; int heads, feet; cout << "输入头,足的数量" << endl; cin >> heads >> feet; for(int i=0;i<35;i++) for (int j = 0;j<35; j

2017-10-14 15:11:13 5592

原创 C++ 图的实现

//图,已经成功实现#include#include#define MaxNum 20#define MaxValue 128using namespace std;typedef struct Graph //定义图的结构{char Vertex[MaxNum];//节点,字符串类型int GType; //图的类型,0代表无像

2017-10-14 14:44:25 3380

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除