自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用回溯法求1, 2, ..., n的全排列

用回溯法求解n个数的全排列,测试了回溯前清零语句的多个不同的位置,发现一般情况下,清零语句只要放在被调用函数语句之后即可。

2023-05-23 09:41:45 166

原创 有n个数排成一圈,现在要从中找出连续的一段数串,使得这串数的和最大。

要解决该题,需弄清楚最大字段和的来源。 假设用数组a[n]来存储圈中的数据,则最大字段和序列只可能是以下两种情况:I) ai, ai+1, ..., aj, 0<=i<=j<=nii) ai, ai+1, ...,an-1, a0, a1, ..., aj, 1<=i<=n-1, 0<=j<n-1方法一:对于情况i),直接用第七章给出的动态规划方法解即可;对于情况ii),分别求以an-1和 a0为起始元素的最大子段和,在二者的子段和的和...

2021-06-19 11:09:54 1956

原创 七巧板着色问题(四种颜色,相邻区域颜色不同),输出所有可行方案

#include <iostream>#include <cmath>#include <stdio.h>#include <stdlib.h>using namespace std;int data[8][8]={0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,0,1,0,0,0,0,0,1,0,0,1,1,1,0...

2021-06-17 13:03:41 2248

原创 n个数中取r个数的非递归回溯实现

#include"stdio.h"#include"stdlib.h"#include"string.h"int count=0;//the first methodvoid comb(int n, int r, int a[]){ int i, ri; ri=1; a[1]=n+1; while (a[1]>r-1) { a[ri]=a[ri]-1; if (ri+a[ri]>=r+1) if (ri==r) ...

2021-06-17 12:58:53 144

原创 n个数中取r个数的全排列的递归回溯实现

#include"stdio.h"#include"stdlib.h"#include"string.h"int count=0;int a[20];int n=5, r=3;void output(){ int j; for(j=1; j<=r; j++) printf("%d ", a[j]); count++; printf("\n"); }void comb(int ri){ if(ri>r) output()...

2021-06-17 12:55:10 228

原创 受限汉诺塔问题

受限汉诺塔问题 古代有一个梵塔,塔内有3个基座A、B、C,开始时A基座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但(1)每次只允许移动一个盘子;(2)在移动过程中在3个基座上的盘子都始终保持大盘在下,小盘在上;(3)任何移动要么把一个盘子搬到B上,要么从B上搬走一个盘子。请编程打印出移动过程 。分析:把n个盘子从A移动到C可分五步完成1)把1到n-1号盘子从A移动到C;2)把n号盘子从A移动到B;3)把1到n-1号盘子从C移动到A;4)

2020-07-06 19:48:36 965

原创 n×m的方格,m为奇数,放置有n×m个数, 要求找到一条从底到顶的路径,使其数相加之和为最大

在一个n×m的方格中,m为奇数,放置有n×m个数,如下图(a)所示。方格中间的下方有一人,此人可按照5个方向前进但不能越出方格,如下图(b)所示。人每走过一个方格必须取此方格中的数。要求找到一条从底到顶的路径,使其数相加之和为最大。输出最大和的值。解题思想: 采用动态规划方法。类似于数塔问题,从下到上求出每个方格到起始点(人的出发位置)的最大距离。用数组a[n]保存同一行各节点到起始点的最远距离,a[j]表示某一行的第j个方格到起始点的最远距离,0<=j<n。数组b[n]保存同一行的所有方格

2020-06-30 12:02:35 2139

原创 利用分治法求一组数据中最大的两个数和最小的两个数。

解题思路:二分法,保留每个子问题的最小的两个数和最大的两个数#include <stdio.h>#include <stdlib.h>#include<iostream>float a[100];float max1, max2, min1, min2; //min1<min2, min1保存最小的数, min2 保存次小数; max2<max1, max1保存最大数, max2保存次大数 void min_maxtwo...

2020-06-08 23:27:15 7734

原创 最佳浏览路线问题

最佳浏览路线问题。某旅游区的街道成网格状(如右图),其中东西向的街道都是旅游街,南北向的街道都是林荫道。由于游客众多,旅游街被规定为单行道。游客在旅游街上只能从西向东走,在林荫道上既可以由南向北走,也可以从北向南走。阿隆想到这个旅游区游玩。他的好友阿福给了他一些建议,用分值表示所有旅游街相邻两个路口之间的道路浏览的必要程度,分值从-100到100的整数,所有林荫道不打分。所有分值不可能全是负值。阿隆可以从任一路口开始浏览,在任一路口结束浏览。请写一个算法,帮助阿隆寻找一条最佳的浏览...

2020-06-08 19:55:48 610

原创 最大字段和问题

#include"stdio.h"#include"stdlib.h"#include"string.h"void optimalpath(int b[], int n){ int begin=0, left, right, maxsum=0, temp=0; for (int i=0; i<n; i++) //求数列b的最大字段和 { if (temp>0) temp+=b[i]; else ...

2020-06-08 19:52:29 164

原创 蜂房问题-蜜蜂在蜂房中只能向下或者右上方爬,从a位置爬到b位置有多少种途径

蜂房问题-蜜蜂在蜂房中只能向下或者右上方爬,从a位置爬到b位置有多少种途径(0<a<b<1000)解题思路:蜜蜂要从a到b,可以先从a到b-1或者从a到b-2。记从a到b有beehouse(a, b)条途径,则有beehouse(a, b)=beehouse(a, b-1)+beehouse(a, b-2).#include"stdio.h"#include"stdlib.h"#include"string.h"int beehouse(int a, int b).

2020-06-07 20:30:17 1469

原创 ABCXYZ比赛对打

甲队A,B,C,乙队X,Y,Z。A!=X, C!=X, C!=Z。#include"stdio.h"#include"stdlib.h"#include"string.h"void PK(){ int a, b, c; for (a=1; a<=3; a++) if (a!=1) for (b=1; b<=3; b++) for (c=1; c<=3; c++) ...

2020-06-07 14:02:18 726

原创 狼找兔子问题

一座山周围有n个洞,顺时针编号为0,1,2,..., n-1。一只狼从0号洞开始,顺时针方向计数,每当经过第m个洞时,就进洞找兔子。例如n=5, m=3,狼经过的洞依次为0,3,1,4,2,0。输入m,n。试问兔子有没有幸免的机会?如果有该藏在哪儿?分析:若n=6, m=3,则狼经过的洞依次为0,3,0,兔子有幸免机会,应藏在1,2,4,5号洞中的一个洞即可。若n=6,m=5, 则狼经过的洞依次为0,5,4,3, 2, 1, 兔子没有幸免机会。当n和m的最大公约数大于1时,兔子有幸免机会。兔子可

2020-06-07 13:29:10 2089 1

原创 判断分数m/n是有限小数还是循环小数

题目:读入自然数m和n(0<=m<n<=1000),判断分数m/n是有限小数还是循环小数解题思想: 循环小数必定会出现余数相同的情况,有限小数不可能出现余数相同的情况//0<=m<n<=1000,m/n#include"stdio.h" #include"stdlib.h"#include"string.h"#include"time.h"void array_n(int m, int n ){ int b[1000]={0}, b1[100...

2020-05-24 10:14:06 2245 1

原创 求2+22+222+...+(n个2)的精确值

解题思想:按照从低位到高位的顺序,把各个被加数的位上的数值相加并加上比该位更低位向该位的进位,取余求出该位上的余数,取整求出该位像比它高一位的进位。重复上述步骤,直至求出和的所有位。方法一:#include"stdio.h"#include"stdlib.h"#include"string.h"int count=0;void sum1(int n ){ int s[n]={0}, sum1[n]={0}; //数组s存储被加数,sum1存储和 int i, d, ...

2020-05-24 09:56:04 1395

原创 删数问题

问题:输入高精度正整数 n ,去掉其中任意 s 个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的 n 和 s,寻找一种方案使得剩下的数字组成的新数最小。输出去掉数字的位置和新的正整数。贪婪原理:位数固定时,高位越小则值越小,尽可能删除较大的高位数字。删除原则:将相邻两位比较,若高位比低位大,则删除高位。被删除数的原位置= 它在新数中的位置 + 它向前移动的次数删除...

2019-05-15 20:43:59 3173

原创 文件包含---多个源程序的编译和链接

三个源程序文件:main.cpp, max.cpp, add.cpp, main函数需要调用add函数和max函数。/*   max.cpp   */int max(int x, int y){return x>y?x:y;}/*   add.cpp   */int add(int x, int y){return x+y;}

2016-04-14 17:43:50 976

转载 深度优先搜索与广度优先搜索

http://blog.csdn.net/andyelvis/article/details/1728378深度优先搜索与广度优先搜索分类: 数据结构与算法2007-08-06 13:16 22680人阅读 评论(13) 收藏 举报class算法graphinsertjava有两种常用的方法可用来搜索图:即

2015-11-15 17:42:57 304

原创 求x, 使x的平方为一个各位数字互不相同的9位数

求x,使x的平方为一个各位数字#include  以下程序在测试时,出错了,想请教下#include  #include  //#define N 3//int main( )int main( ){     //system("CLS");   //int b0,b1,i,j,n,k,m,tt;   int a[10];   for

2015-11-07 17:02:50 2091

原创 关于贪心算法

关于贪心算法,有个问题一个让我很纠结:贪心算法并不能保证得到原问题的最优解。但又要求同时具有贪心选择性质和最优子结构性质的问题才能用贪心算法来解,可是一旦一个问题具有这两个性质,得到的解就是最优解。然后,我就不明白了,为什么“贪心算法并不能保证得到原问题的最优解”。今天终于在另外一本书上看到了相关的说明。《算法设计与分析》 张军等  清华大学出版社“那么对于什么样的问题,贪心算

2015-11-02 20:32:38 1113

翻译 “求一列数中的第二小的数”

问题:求一列数中的第二小的数方法:分治法,二分法,每次保留最小的两个数据现在遇到了一些问题,请各位大神帮忙解下疑惑。#include #include #include float a[100];void two (int i, int j, float &fmin2, float &fmin1){    float lm

2015-10-24 23:18:34 1091

翻译 贪婪算法--去掉 n 位正整数中的 s 位

键盘输入一个高精度的正整数 n,去掉其中任意 s 个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n 和 s,寻找一种方案使得剩下的数字组成的新数最小。怎么样根据贪婪策略删除数字呢?总目标是删除高位较大的数字,具体的,相邻两位比较若高位比低位大,则删除高位。C 代码如下:#include #include #include vo

2015-10-24 15:38:26 1283

原创 二分法求解数列中最小的数

#include  #include  int count=0;int Merge(int a,int b){    int c;   if (a      return a;   else        return b; }int MergeSort(int r[],int r1[],int s,int t)

2015-10-23 17:02:48 406

原创 乘法填空---18个X均是素数

/* XXX * XX XXXX XXXX XXXXX18个X均是素数 */#include #include int main( ){int i, j, k, s, s1, s2, s3, t, m, n, x, y, h, count, count1;//int i, j, k, s, s1, s

2015-10-16 13:21:06 999

原创 n个自然数中取r个数的组合

例:找出n个自然数(1, 2, 3,..., n)中取r个数的组合,设计递归算法进行求解。例如,当n=5, r=3时,从大到小排列的组合数为:    5   4   3   5   4   2   5   4   1   5   3   2   5   3   1   5   2   1   4   3   2   4   3   1   4   2   1

2015-09-23 19:11:52 6624 2

转载 递归(三)

http://www.cnblogs.com/zysbk/archive/2012/11/16/2773819.html  原文  下面再给大家复习下递归:什么叫递归呢?“和尚讲故事”,就是方法自己调自己,这就是递归。 三、方法自己调自己我们先调下T1方法,让大家看个东西: 四、让大家看的东西 五、调用堆栈    用堆栈来监视一下:一开始调了ma

2015-09-23 18:39:49 387

转载 递归与尾递归总结

http://www.cnblogs.com/Anker/archive/2013/03/04/2943498.html  原文    前言:今天上网看帖子的时候,看到关于尾递归的应用(http://bbs.csdn.net/topics/390215312),大脑中感觉这个词好像在哪里见过,但是又想不起来具体是怎么回事。如是乎,在网上搜了一下,顿时豁然

2015-09-23 15:22:09 313

转载 递归算法 .

http://blog.csdn.net/wangjinyu501/article/details/8248492  原版一、基本概念            递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大

2015-09-23 15:03:38 402

转载 strcpy没有声明 c++头文件详解

strcpy没有声明 c++头文件详解2010-10-23 12:19 4971人阅读 评论(0)收藏 举报 c++stringiostreamcmath.h语言协议分发程序程序在公司机器上编译运行良好,而我在我的虚拟机上编译,却出下如下错误:msg.cpp:3101: error: ‘strcpy’ was not declared in th

2015-08-25 10:16:25 12288

转载 ARM与X86架构对比区别

关键字:ARM架构 X86架构 工控主板 开发设计 Android(安卓)系统 LINUX WINCEGOOGLE的Android系统和苹果的IPAD、IPHONE推出后,ARM架构的电脑系统(特别是在终端方面应用)受到用户的广泛支持和追捧,ARM+Android成为IT、通信领域最热门的话题,众多芯片厂商纷纷推出具有各种独特应用功能基于ARM结构开发的产品,近期最新形成的“异构概念”更成

2015-03-10 15:26:24 366

转载 Latex:Failed to read UCS2/UCS4 TrueType cmap

我的电脑装的是英文版的Windows XP,在用latex排班系统写中文论文时,编译通得过,但是却生成不了PDF。点击按钮“dvipdf”,就跳出以下对话框:Exit code (1) indicating that some problems might have occured during the compilation could not load a virtual/phys

2015-01-27 11:11:48 2772

转载 0021算法笔记——【贪心算法】贪心算法与活动安排问题

分类: 算法2013-03-23 11:31 3126人阅读 评论(0) 收藏 举报贪心算法活动安排问题算法笔记最优子结构性质动态规划   1、贪心算法     (1)原理:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题

2014-11-25 22:10:40 2157

转载 0009算法笔记——【动态规划】动态规划与斐波那契数列问题,最短路径问题

http://blog.csdn.net/liufeng_king/article/details/8490770分类: 算法2013-01-12 15:20 3632人阅读 评论(1) 收藏 举报动态规划斐波那契数列最短路径算法笔记       1、动态规划算法:       动态规划:通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常

2014-11-25 21:51:44 556

转载 0012算法笔记——【动态规划】最长公共子串问题

http://blog.csdn.net/liufeng_king/article/details/85288582013-01-23 11:14 4597人阅读 评论(1) 收藏 举报动态规划后缀树最长公共子串算法笔记          1、问题相关定义:          (1)字符串:一个字符串S是将n 个字符顺次排列形成的数组, n称为S的长度,表示为len(S) 。S的第

2014-11-25 21:21:56 352

转载 0018算法笔记——【动态规划】流水作业调度问题与Johnson法则

2013-03-15 16:42 4693人阅读 评论(7) 收藏 举报流水作业调度问题动态规划Johnson算法笔记     1、问题描述:         n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi。流水作业调度问题要求确定这n个作业的最优加

2014-11-25 21:19:44 641

转载 0018算法笔记——【动态规划】流水作业调度问题与Johnson法则

http://blog.csdn.net/liufeng_king/article/details/86783162013-03-15 16:42 4693人阅读 评论(7) 收藏 举报流水作业调度问题动态规划Johnson算法笔记     1、问题描述:         n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都

2014-11-25 21:17:53 1134

转载 并行编程--MPI开发入门

系统环境配置Win2K Adv Svr + VC6MPI开发包下载网上搜索下载MPICH2地址http://www-unix.mcs.anl.gov/mpi/mpich2/MPI开发包安装       下载完毕,开始安装MPICH2开发包,提示需要.NET 1.1 框架。鉴于本人对VS.NET 2003爱好,直接安装了整个开发环境,也可以只安装.NET框架。可以到微软官方网站下

2014-11-05 15:12:28 1298

转载 【程序语言】并行编程——openMP初探

http://blog.csdn.net/theprinceofelf/article/details/7205813

2014-10-30 21:44:59 367

转载 堆和栈的区别(转过无数次的文章)

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆

2014-10-30 20:53:47 316

原创 A program on matrix multiplication

#include#include#define N 6void multiply(int *p, int *q);int a[N][N]={{0,1,1,1,0,0}, {0,0,0,1,1,0}, {0,0,0,0,1,0}, {0,0,0,0,0,1}, {0,0,0,0,0,1}, {0,0,0,0,0,0}};//只能在定义时给数组赋初值int b[

2014-03-05 16:19:51 403

空空如也

空空如也

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

TA关注的人

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