算法
xifengcode
这个作者很懒,什么都没留下…
展开
-
数据结构:以深度优先搜索方式产生图的生成树 完整代码
图的深度优先搜索可以用来解决很多问题,例如可以用于产生图的生成树。程序代码在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 · 1907 阅读 · 0 评论 -
数据结构:以广度优先搜索方式产生图的生成树 完整代码
图的广度优先搜索可以用来解决很多问题,例如可以用于产生图的生成树。程序代码在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 · 1195 阅读 · 0 评论 -
数据结构 循环队列的实现与应用举例:报数问题
循环队列是一种常见的队列实现方式,各个数据元素依次存储,并设置两个指针,分别指向队头和队尾,在插入和删除数据时,队头指针和队尾指针会循环使用存储空间。应用队列可以解决报数问题。报数问题:设有n个人站成一排,从左向右的编号分别为1~n, 现在从左向右报数“1,2,1,2,1,2….”,数到”1”的人出列,数到”2”的人站到队伍最右边。报数过程反复进行,直到n个人都出列为止。分析:可以创建一个队列存储各个数据。左边相当于队头,右边相当于队尾。左边的人报数相当于从队列中取出队头元素并删除队头元素。站到队伍原创 2020-09-23 12:22:32 · 3088 阅读 · 0 评论 -
数据结构 链式队列的实现与应用举例:报数问题
链式队列是一种常见的队列实现方式,通过链表存储队列的各个数据元素,并设置两个指针,分别指向队头和队尾。应用队列可以解决报数问题。报数问题:设有n个人站成一排,从左向右的编号分别为1~n, 现在从左向右报数“1,2,1,2,1,2….”,数到”1”的人出列,数到”2”的人站到队伍最右边。报数过程反复进行,直到n个人都出列为止。分析:可以创建一个队列存储各个数据。左边相当于队头,右边相当于队尾。左边的人报数相当于从队列中取出队头元素并删除队头元素。站到队伍的最右边相当于在队尾插入一个数据。为实现1,2,原创 2020-09-22 22:18:00 · 3830 阅读 · 0 评论 -
for循环,可以有多强大?(复杂for循环的例子)
博文网址:在C或C++语言中,for循环是一个比较基本的语句。下面的例子展示了一个for循环可以有多强大。题目:假设有五个整数,并且规定加减乘除各使用一次,编程序找到一个算术表达式,它的运算结果正好是24。假设加减乘除的算符优先级都是相等的,按从左到右的次序计算。这个题目,是不是要写很多行代码呢?其实不用,一个for循环就够用了。下面给出了程序代码。注意:这个程序甚至没有使用if.........原创 2020-03-25 00:35:36 · 1427 阅读 · 0 评论 -
拼数 (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 · 402 阅读 · 0 评论 -
回文数 (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 · 230 阅读 · 0 评论 -
矩形 (P1191)
题目描述给出一个n×n的矩阵,矩阵中,有些格子被染成白色,有些格子被染成黑色,现要求矩阵中白色矩形的数量输入输出格式输入格式:第一行,一个整数n,表示矩形的大小。接下来n行,每行n个字符,这些字符为“W”或“B”。其中“W”表示白格,“B”表示黑格。输出格式:一个正整数,为白色矩形数量输入样例:4WWBWBBWBWBWWWBWB输出:15 #incl...原创 2018-10-24 22:56:29 · 714 阅读 · 0 评论 -
计算系数 (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 · 204 阅读 · 0 评论 -
递归调用的深度与栈的大小
函数在递归调用时会占用栈的空间,因此,当递归达到一定的深度时,就会出现栈溢出的情况。下面的代码,函数的参数值为多少,就进行了多少次递归。这个程序直接运行,得不得最终的结果: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 · 4856 阅读 · 0 评论 -
n个数之间的大于等于有多少种可能
题目:a,b两个数之间,用>号和=号表示关系,共有三种可能:a>b a=b b>a。a,b,c三个数之间,用>号和=号表示关系,共有13种可能:a=b=c a=b>c c>a=b a=c>b b>a=c a>b=cb=c>a a>b>c a>c>b b>a&原创 2018-10-24 23:15:38 · 695 阅读 · 0 评论 -
阶乘之和 (luogu P1009)
题目描述用高精度计算出S=1!+2!+3!+…+n!(n≤50)其中“!”表示阶乘,例如:5!=5*4*3*2*1。输入输出格式输入格式:一个正整数N。输出格式:一个正整数S,表示计算结果。输入输出样例输入样例#1: 3输出样例#1: 9#include<cstdio>#include<cstring>char r...原创 2018-10-24 22:36:17 · 200 阅读 · 0 评论 -
能显示层号的按层遍历二叉树
#include "malloc.h"typedef struct BiTNode{ char data; ...原创 2018-10-18 14:57:15 · 456 阅读 · 0 评论 -
王晓东老师《计算机算法设计与分析》棋盘覆盖问题完整程序
说明:下面的程序对应于王晓东老师《计算机算法设计与分析(第4版)》的棋盘覆盖问题。其中chessBoard函数来自于王晓东老师的著作,本人编写了display函数和main函数。#include <stdio.h>int board[8][8];int tile;void chessBoard(int tr, int tc, int dr, int dc, int size){...原创 2018-03-06 13:29:28 · 1499 阅读 · 0 评论 -
最长公共子序列LCS
#include <stdio.h>#include <string.h>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 · 464 阅读 · 0 评论 -
01背包问题动态规划算法
#include <cstdio>#define max(u,v) (u)>(v)?(u):(v)#define min(u,v) (u)>(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 · 2487 阅读 · 0 评论 -
矩阵连乘问题动态规划算法
#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<=n;i++) m[i][i]=0; for(r=2;r<=n;r++) { ...转载 2018-03-20 17:12:12 · 584 阅读 · 0 评论 -
多边形游戏问题
多边形游戏问题转载 2018-03-26 13:10:08 · 628 阅读 · 0 评论 -
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 · 7331 阅读 · 0 评论 -
输出所有的二进制数:深度优先方法与广度优先方法
题目:请编写程序输出000-111之间的所有二进制数。在一个二叉树中,假设向左的边标记为0,向右的边标记为1,则所有的二进制数刚好对应于一个满二叉树。对于二叉树,可以有两种遍历方式:深度优先和广度优先。深度优先可以通过递归程序 实现,广度优先可以借助于队列实现。深度优先方法:#include <cstdio>int data[5];void f(int n){ i...原创 2018-04-05 15:20:37 · 479 阅读 · 0 评论 -
输出所有的全排列:深度优先方法与广度优先方法
题目:输出1234的所有全排列。深度优先方法:通过递归函数实现#include <cstdio>#include <algorithm>using namespace std;void perm(int data[], int k, int n){ int i; if(k==n-1) { for(i=0;i<n;i++) { printf(...原创 2018-04-05 22:44:49 · 2070 阅读 · 0 评论 -
连续邮资问题
/* 连续邮资问题 算法设计: 该问题是设计最佳的邮票面值,用来表示最大的区间 对于连续邮姿问题,用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 · 1409 阅读 · 0 评论 -
汉诺塔程序
设a,b,c是3个塔座。开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1,2,…,n,现要求将塔座a上的这一叠圆盘移到塔座b上,并仍按同样顺序叠置。#include<iostream>void Hanoi(int n,int a,int b,int c){ if(n==1) printf("%d->%d\n",a,b);...转载 2018-03-12 22:06:19 · 1313 阅读 · 0 评论