
算法
zgh27
这个作者很懒,什么都没留下…
展开
-
符号三角问题
下面都是“-”。 下图是由14个“+”和14个“-”组成的符号三角形。2个同号下面都是“+”,2个异号下面都是“-”。 在一般情况下,符号三角形的第一行有n个符号。符号三角形问题要求对于给定的n,计算有多少个不同的符号三角形,使其所含的“+”和“-”的个数相同。 #include<iostream> using namespace std; class Triangle{ frien...原创 2019-11-01 21:15:55 · 638 阅读 · 0 评论 -
最优服务次序问题
实现提示:贪心策略为最短服务时间优先。 排序计算最短等待时间 #include<stdio.h> void main() { int n,t[100],i,j,k; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&t[i]); for(i=1;i<=n;i++) for(j=1+i;j<=n;...原创 2019-10-25 19:26:31 · 270 阅读 · 0 评论 -
贪心算法 背包问题
给定n种物品和一个背包。物品i的重量是Wi,其价值为Vi,背包的容量为C。应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 核心代码 ```c void Knapsack(int n, float M, float v[],float w[],float x[]) { Sort(n,v,w); int i; for (i=1;i<=n;i...原创 2019-10-22 13:00:45 · 1223 阅读 · 2 评论 -
最大子段和
给定由n个整数(可能有负整数)组成的序列(a1,a2,…,an),最大子段和问题要求该序列形如 的最大值(1<=i<=j<=n),当序列中所有整数均为负整数时,其最大子段和为0。 1) 用分治法求解。 #include<stdio.h> int MaxSum(int a[],int left,int right); int a[100]; int main() { ...原创 2019-10-20 11:04:54 · 667 阅读 · 1 评论 -
计算矩阵连乘积
在科学计算中经常要计算矩阵的乘积。矩阵A和B可乘的条件是矩阵A的列数等于矩阵B的行数。若A是一个p×q的矩阵,B是一个q×r的矩阵,则其乘积C=AB是一个p×r的矩阵。由该公式知计算C=AB总共需要pqr次的数乘。其标准计算公式为: 现在的问题是,给定n个矩阵{A1,A2,…,An}。其中Ai与Ai+1是可乘的,i=1,2,…,n-1。要求计算出这n个矩阵的连乘积A1A2…An,最少的乘法次数。 ...原创 2019-10-16 12:26:31 · 566 阅读 · 0 评论 -
最长公共子序列
最长公共子序列问题:若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}。 给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,...原创 2019-10-15 17:05:51 · 407 阅读 · 0 评论 -
最长公共子序列问题
若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}。 给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公...原创 2019-10-10 22:51:57 · 223 阅读 · 0 评论 -
棋盘覆盖问题
输入:棋盘大小、特殊方格的行号和列号 输出:基本要求:以相同的数字表示一个L型骨牌,输出棋盘中每个方格对应的数字 #include <stdio.h> int Board[1000][1000],tile; void ChessBoard(int tr,int tc,int dr,int dc,int size) { if(size == 1) return; ...原创 2019-10-04 13:37:25 · 214 阅读 · 0 评论 -
斐波那契数列
1.Fibonacci数列 无穷数列1,1,2,3,5,8,13,21,34,55,……,称为Fibonacci数列。它可以递归地定义为: F(n)={■(1@1@F(n-1)+F(n-2))┤ ■(n=0@n=1@n>1) 第n个Fibonacci数可递归地计算如下: int fibonacci(int n) { if (n <= 1) return 1; re...原创 2019-10-02 13:12:29 · 181 阅读 · 0 评论 -
算法设计基础
算法设计基础 编程求和:s=a+aa+aaa+aaaa+ „„+aaaa„aaa(n个),其中a为1~9中的一个数字。 提示:若第一项为a , 以后每一项由前一项乘以10加上a递推得到,然后求和。 #include<stdio.h> #define N 6 int main() { int a[N]; int s=0; scanf("%d",&a[0]); for(int ...原创 2019-09-30 12:57:16 · 163 阅读 · 0 评论