自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xifengcode

C/C++程序与算法交流

  • 博客(39)
  • 收藏
  • 关注

原创 for循环,可以有多强大?(复杂for循环的例子)

博文网址:在C或C++语言中,for循环是一个比较基本的语句。下面的例子展示了一个for循环可以有多强大。题目:假设有五个整数,并且规定加减乘除各使用一次,编程序找到一个算术表达式,它的运算结果正好是24。假设加减乘除的算符优先级都是相等的,按从左到右的次序计算。这个题目,是不是要写很多行代码呢?其实不用,一个for循环就够用了。下面给出了程序代码。注意:这个程序甚至没有使用if.........

2020-03-25 00:35:36 1355

原创 数据结构:二叉排序树的建立与查找

以下代码为二叉排序树的插入、删除与查找。主要的算法参考了严蔚敏老师的数据结构教材。在VC++ 6.0 和 Dev-C++下编译通过。#include "stdio.h"#include "stdlib.h"typedef struct BiTNode { struct BiTNode *lchild, *rchild; int data;} BiTNode, *BiTree;BiTree Root;int SearchBST(BiTree T, int key, BiTre.

2020-11-13 23:59:09 2097 1

原创 数据结构:拓扑排序 完整代码

假设有向图以邻接表存储,每个顶点的名称都用一个字母表示。先输入顶点的数量,再输入各个顶点的名称,最后输入各条边。在输入边时,每次输入两个顶点的名称。输入不存在的两个顶点代表边输入结束。代码主要参考了严蔚敏老师的数据结构教材。在VC++ 6.0和Dev-C++下编译通过。#include "stdio.h"#include "stdlib.h"#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef int S.

2020-11-07 22:57:48 2901 2

原创 数据结构:栈的基本操作的实现 完整代码

以下代码为栈的存储结构定义和栈的基本操作的实现。代码主要来自于严蔚敏老师的数据结构教材。代码在VC++ 6.0 和 Dev-C++下编译通过。#include<stdio.h> #include<stdlib.h> #include<math.h> #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef int Status; typedef int Boolean; /*

2020-11-07 13:45:51 6047

原创 数据结构:以深度优先搜索方式产生图的生成树 完整代码

图的深度优先搜索可以用来解决很多问题,例如可以用于产生图的生成树。程序代码在VC++6.0和Dev-C++下编译通过。算法的输入和输出为:#include "stdio.h"#include "stdlib.h"#define MAX_VERTEX_NUM 100 typedef int AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedef struct { // 图的定义 char vexs[MAX_VERTEX_NUM]; A

2020-10-30 22:49:30 1839

原创 数据结构:以广度优先搜索方式产生图的生成树 完整代码

图的广度优先搜索可以用来解决很多问题,例如可以用于产生图的生成树。程序代码在VC++6.0和Dev-C++下编译通过。算法的输入和输出为:#include "stdio.h"#include "stdlib.h"#include <queue>using namespace std; #define MAX_VERTEX_NUM 100 typedef int AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedef .

2020-10-30 22:13:37 1031

原创 数据结构:图的邻接矩阵存储与广度优先搜索 完整代码

图的搜索是数据结构课程非常重要的内容。以下代码的存储结构定义、广度优先搜索等算法主要来自于严蔚敏老师的数据结构教材。以下代码在VC++6.0 及 Dev-C++下编译通过。算法的输入:先输入点的个数,再输入各个点的名称,再输入每条边的起点和终点。如果在输入边时起点和终点都输入@,则输入结束。#include "stdio.h"#include "stdlib.h"#include <queue>using namespace std;#define MAX_VERTE.

2020-10-29 21:03:07 308

原创 数据结构:图的邻接表存储与深度优先搜索 完整代码

图的搜索是数据结构课程非常重要的内容。以下代码的存储结构定义、深度优先搜索等算法主要来自于严蔚敏老师的数据结构教材。以下代码在VC++6.0 及 Dev-C++下编译通过。算法的输入:先输入点的个数,再输入各个点的名称,再输入每条边的起点和终点。如果在输入边时起点和终点都输入-1,则输入结束。#include "stdio.h"#include "stdlib.h"typedef struct ArcNode { int adjvex; struct ArcNode *nexta

2020-10-29 16:02:42 450

原创 数据结构:线索二叉树的创建与遍历 完整代码

InThreading()、InOrderThreading()、InOrderTraverse_Thr()等几个函数来自于严蔚敏老师的数据结构教材,本人编写了main()函数,在VC++6.0和DEV-C++下编译通过。#include "stdio.h"#include "malloc.h"typedef struct BiThrNode { char data; struct BiThrNode *lchild, *rchild; // 左右指针 int LTag, RTag; /

2020-10-23 12:12:17 2520 5

原创 数据结构:多维数组的编程实现

下面给出了多维数组的完整程序。该程序在VC++ 6.0和Dev-C++下编译通过。代码主要参考了严蔚敏老师的教材,本人完成了main函数的编写。注意在Assign和Value两个函数中多定义了一个参数temp用于占位,没有实际用途。如果没有temp这个参数,在VC++6.0下结果不正确。#include "stdio.h"#include "stdlib.h" #include"stdarg.h "#define ERROR 0#define MAX_ARRAY_DIM 8

2020-10-04 23:02:24 454

原创 数据结构 循环队列的实现与应用举例:报数问题

循环队列是一种常见的队列实现方式,各个数据元素依次存储,并设置两个指针,分别指向队头和队尾,在插入和删除数据时,队头指针和队尾指针会循环使用存储空间。应用队列可以解决报数问题。报数问题:设有n个人站成一排,从左向右的编号分别为1~n, 现在从左向右报数“1,2,1,2,1,2….”,数到”1”的人出列,数到”2”的人站到队伍最右边。报数过程反复进行,直到n个人都出列为止。分析:可以创建一个队列存储各个数据。左边相当于队头,右边相当于队尾。左边的人报数相当于从队列中取出队头元素并删除队头元素。站到队伍

2020-09-23 12:22:32 2898

原创 数据结构 链式队列的实现与应用举例:报数问题

链式队列是一种常见的队列实现方式,通过链表存储队列的各个数据元素,并设置两个指针,分别指向队头和队尾。应用队列可以解决报数问题。报数问题:设有n个人站成一排,从左向右的编号分别为1~n, 现在从左向右报数“1,2,1,2,1,2….”,数到”1”的人出列,数到”2”的人站到队伍最右边。报数过程反复进行,直到n个人都出列为止。分析:可以创建一个队列存储各个数据。左边相当于队头,右边相当于队尾。左边的人报数相当于从队列中取出队头元素并删除队头元素。站到队伍的最右边相当于在队尾插入一个数据。为实现1,2,

2020-09-22 22:18:00 3586

原创 数据结构:双向循环链表的实现

以下代码为双向循环链表的实现,在vc++ 6.0 和 Dev-C++ 下编译通过。代码总体上来自于教材,做了少量修改。#include<stdio.h>#include<stdlib.h>#include<math.h> #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1 typedef int Status;typedef int Bool

2020-09-19 22:18:14 1733

原创 数据结构第3章:数制转换的完整代码

此代码在VC++ 6.0 及Dev-C++下编译通过。#include "stdio.h"#include "stdlib.h"#include "malloc.h"#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedef struct { int *base; int *top; int stacksize; }SqStack;int InitStack(SqStack &S){

2020-09-18 23:12:19 5966

原创 数据结构:一元多项式表示及相加的完整代码

一元多项式表示及相加的完整代码是一个链表应用的例子。下面给出了完整的代码,在VC++ 6.0以及 Dev-C++ 下编译通过。测试数据:A多项式输入:7 03 19 85 170 0B多项式输入:8 122 7-9 80 0输出:#include "stdio.h"#include "malloc.h"#include "math.h"typedef struct LNode{ float coef; int exp; struct

2020-09-17 12:47:47 4656

原创 n个数之间的大于等于有多少种可能

题目:a,b两个数之间,用>号和=号表示关系,共有三种可能:a&gt;b  a=b  b&gt;a。a,b,c三个数之间,用>号和=号表示关系,共有13种可能:a=b=c   a=b&gt;c   c&gt;a=b    a=c&gt;b     b&gt;a=c    a&gt;b=cb=c&gt;a    a&gt;b&gt;c   a&gt;c&gt;b    b&gt;a&

2018-10-24 23:15:38 652

转载 递归调用的深度与栈的大小

函数在递归调用时会占用栈的空间,因此,当递归达到一定的深度时,就会出现栈溢出的情况。下面的代码,函数的参数值为多少,就进行了多少次递归。这个程序直接运行,得不得最终的结果:2000000,因为栈没有那么大。#include "stdio.h"int fun(int n){if(n==1)return 1;return fun(n-1)+1;}int main(){int...

2018-10-24 23:06:56 4700

原创 计算系数 (vijos P1739)

给定一个多项式(ax + by)^k,请求出多项式展开后x^n * y^m项的系数。格式输入格式共一行,包含5个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开。输出格式输出共1行,包含一个整数,表示所求的系数,这个系数可能很大,**输出对10007取模后的结果**。样例1样例输入11 1 3 1 2样例输出13限制1s 提示对于...

2018-10-24 23:01:45 187

原创 矩形 (P1191)

题目描述给出一个n×n的矩阵,矩阵中,有些格子被染成白色,有些格子被染成黑色,现要求矩阵中白色矩形的数量输入输出格式输入格式:第一行,一个整数n,表示矩形的大小。接下来n行,每行n个字符,这些字符为“W”或“B”。其中“W”表示白格,“B”表示黑格。输出格式:一个正整数,为白色矩形数量输入样例:4WWBWBBWBWBWWWBWB输出:15 #incl...

2018-10-24 22:56:29 628

原创 回文数 (luogu P1015)

题目描述若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。又如:对于10进制数87:STEP1:87+78 = 165 STEP2:165+561 = 726STEP3:726+627 = 1353 STEP4:1353+3531 = 4884在这里的一步是指...

2018-10-24 22:43:17 190

原创 拼数 (luogu P1012)

题目描述设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数。例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613输入输出格式输入格式:第一行,一个正整数n。第二行,n个正整数。输出格式:一个正整数,表示最大的整数输入输出样例输入样例...

2018-10-24 22:39:45 389

原创 阶乘之和 (luogu P1009)

题目描述用高精度计算出S=1!+2!+3!+…+n!(n≤50)其中“!”表示阶乘,例如:5!=5*4*3*2*1。输入输出格式输入格式:一个正整数N。输出格式:一个正整数S,表示计算结果。输入输出样例输入样例#1: 3输出样例#1: 9#include&lt;cstdio&gt;#include&lt;cstring&gt;char r...

2018-10-24 22:36:17 171

原创 能显示层号的按层遍历二叉树

#include "malloc.h"typedef struct BiTNode{ char data; ...

2018-10-18 14:57:15 437

原创 n皇后问题的子集树求解与排列树求解

在n×n棋盘上放彼此不受攻击的n个皇后。按国际象棋规则,皇后可攻击同行、同列、同一斜线的棋子。等价于在n×n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。可以用一个数组存储每行中的皇后的纵坐标,例如n=8时,X=(4,6,8,2,7,1,3,5)表示第一行的皇后的纵坐标为4,第二行的皇后的纵坐标为6,......比较常用的一种求解办法为通过子集树求解,约束条件为abs(k-...

2018-04-08 22:28:42 7068

转载 连续邮资问题

/*   连续邮资问题   算法设计:   该问题是设计最佳的邮票面值,用来表示最大的区间   对于连续邮姿问题,用n元组x[1:n]表示n种不同的邮票面值并约定它们从小到大排列。   整数r表示当前使用不超过m张邮票能贴出的最大连续邮资区间。 x[1] = 1是唯一的选择。此时最大连续邮资区间是[1:m]   接下来x[2]的可能取值范围是[2:m+1],这个取值范围就决定了x[2]应该怎么选,...

2018-04-05 22:52:50 1292

原创 输出所有的全排列:深度优先方法与广度优先方法

题目:输出1234的所有全排列。深度优先方法:通过递归函数实现#include &lt;cstdio&gt;#include &lt;algorithm&gt;using namespace std;void perm(int data[], int k, int n){ int i; if(k==n-1) { for(i=0;i&lt;n;i++) { printf(...

2018-04-05 22:44:49 2035

原创 输出所有的二进制数:深度优先方法与广度优先方法

题目:请编写程序输出000-111之间的所有二进制数。在一个二叉树中,假设向左的边标记为0,向右的边标记为1,则所有的二进制数刚好对应于一个满二叉树。对于二叉树,可以有两种遍历方式:深度优先和广度优先。深度优先可以通过递归程序 实现,广度优先可以借助于队列实现。深度优先方法:#include &lt;cstdio&gt;int data[5];void f(int n){ i...

2018-04-05 15:20:37 449

转载 多边形游戏问题

多边形游戏问题

2018-03-26 13:10:08 604

转载 矩阵连乘问题动态规划算法

#include"stdio.h"int m[7][7],s[7][7];int p[7]; void MatrixChain(int n, int *p, int m[7][7], int s[7][7]) { int i, j, k, r, tmp; for(i=1;i&lt;=n;i++) m[i][i]=0; for(r=2;r&lt;=n;r++) { ...

2018-03-20 17:12:12 535

转载 01背包问题动态规划算法

#include &lt;cstdio&gt;#define max(u,v) (u)&gt;(v)?(u):(v)#define min(u,v) (u)&gt;(v)?(v):(u)int m[10][20];int v[10];int w[10];int x[10];void Knapsack(int v[10], int w[10], int c, int n, int m...

2018-03-20 17:09:42 2420

转载 最长公共子序列LCS

#include &lt;stdio.h&gt;#include &lt;string.h&gt;int c[20][20];int b[20][20];char x[20];char y[20];char z[20];void LCSLength(int m,int n,char x[20],char y[20],int c[20][20],int b[20][20]){ ...

2018-03-20 16:30:29 372

转载 汉诺塔程序

设a,b,c是3个塔座。开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1,2,…,n,现要求将塔座a上的这一叠圆盘移到塔座b上,并仍按同样顺序叠置。#include&lt;iostream&gt;void Hanoi(int n,int a,int b,int c){ if(n==1) printf("%d-&gt;%d\n",a,b);...

2018-03-12 22:06:19 1291

原创 王晓东老师《计算机算法设计与分析》棋盘覆盖问题完整程序

说明:下面的程序对应于王晓东老师《计算机算法设计与分析(第4版)》的棋盘覆盖问题。其中chessBoard函数来自于王晓东老师的著作,本人编写了display函数和main函数。#include &lt;stdio.h&gt;int board[8][8];int tile;void chessBoard(int tr, int tc, int dr, int dc, int size){...

2018-03-06 13:29:28 1452

转载 C++ Template 基础篇(转载)

C++ Template 基础篇(一):函数模板 C++ Template 基础篇(二):类模板 C++ Template 基础篇(三):参数魔法C++ Template 基础篇(四):模板与友元

2018-03-03 07:32:29 567

转载 动态规划之01背包问题(最易理解的讲解)(转载)

动态规划之01背包问题(最易理解的讲解)(转载)http://blog.csdn.net/mu399/article/details/7722810点击打开链接

2018-02-28 19:56:45 393

原创 备忘录方法

动态规划算法的一个变形是备忘录方法。备忘录方法也用一个表格来保存已解决的子问题的答案,在下次需要解决此问题时,只要简单地查看该子问题的解答,而不必重新计算。与动态规划算法不同的是,备忘录方法的递归方式是自顶向下的,而动态规划算法则是自底向上递归的。因此,备忘录方法的控制结构与直接递归方法的控制结构相同,区别在于备忘录方法为每个解过的子问题建立了备忘录以备需要时查看,避免了相同子问题的重复求解。

2018-01-28 13:37:54 6661

原创 当数组下标是负数

假设整数位置的二维坐标点上都有一个温度,横坐标的范围是-3..2共6个点,纵坐标的范围是-4..3共8个点,因此,二维坐标点共48个,小宝定义了二维数组int data[6][8];用data[0][0]存储坐标点(-3,-4)的温度,用data[0][1]存储坐标点(-3,-3)的温度,用data[0][2]存储坐标点(-3,-2)的温度,......,用data[5][7]存储坐标点(2,

2018-01-28 13:29:47 3146

原创 luoguo P3371 单源最短路径

如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。输入输出格式输入格式:第一行包含三个整数N、M、S,分别表示点的个数、有向边的个数、出发点的编号。接下来M行每行包含三个整数Fi、Gi、Wi,分别表示第i条有向边的出发点、目标点和长度。输出格式:一行,包含N个用空格分隔的整数,其中第i个整数表示从点S出发到点i的最短路径长度(若S=i则最短路径长度为0,若从点

2018-01-28 13:10:28 307

原创 游戏 CCF CSP 201712-2

问题描述  有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。  游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋

2018-01-27 23:10:52 1053

空空如也

空空如也

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

TA关注的人

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