
算法题
C_xixixixi
这个作者很懒,什么都没留下…
展开
-
【算法】哈密顿回路
// 哈密顿回路 // 输出所有路径 #include<iostream>using namespace std;const int N = 5;int arc[N][N]={ {0,1,0,1,0}, {1,0,1,0,1}, {0,1,0,1,1}, {1,0,1,0,1}, {0,1,1,1,0}};int visited[N]; // 初始均为未访问 int x[N]; // 初始均为0结点 int Hamiton(){ // 初始化 从点0开.原创 2021-05-06 19:52:45 · 1420 阅读 · 0 评论 -
【算法题】组合数
#include<iostream>#include<cstdio>typedef long long LL;using namespace std; int main() { LL N, M; while (scanf("%lld%lld",&N,&M) && (N||M)){ double C = 1.0; for (LL i=N;i>N-M;i--)原创 2020-05-26 14:25:32 · 420 阅读 · 0 评论 -
【算法】批作业处理调度问题(回溯法)
#include<iostream>using namespace std;int BatchJob(int a[],int b[],int n){ int i,k; int x[10],sum1[10],sum2[10]; // 假设最多9个作业 int bestTime = 1000; // 假定最后完成时间不超过1000 // 初始化调度方案 for(i=1;i<=n;i++){ x[i] = -1; sum1[i] = 0; sum2[i..原创 2020-05-25 22:48:03 · 738 阅读 · 0 评论 -
【算法题】UVA369 Combinations(组合数)
题目GIVEN: 5 <= N <= 100; 5 <= M <= 100; M <= NCompute the EXACT value of: C = N! / (N-M)!M!输入The input to this program will be one or more lines each containing zero or more leading spaces, a value for N, one or more spaces, and a value f原创 2020-05-19 14:09:52 · 198 阅读 · 0 评论 -
【算法】多机调度问题(贪心法)
#include<iostream>using namespace std;int S[3][7]; // 假设3台机器处理7个作业 void MultiMachine(int t[],int d[],int p[],int n,int m){ int rear[3]; // S[i]为存储机器i处理作业的队列,rear[i]为队尾下标 int i,j,k; // 安排前m个作业 for(i=0;i<m;i++){ S[i][0] = i+1; rear[.原创 2020-05-18 17:41:04 · 539 阅读 · 0 评论 -
【算法】近似串匹配问题(动态规划)
#include<iostream>using namespace std;int D[20][20]; // 填表矩阵设置为全局变量 int min(int a,int b,int c){ if(a<b && a<c) return a; else if(b<a && b<c) return b; e...原创 2020-04-29 10:18:13 · 3980 阅读 · 6 评论 -
【算法】随机数生成器
问题栋栋最近迷上了随机算法,而随机数是生成随机算法的基础。栋栋准备使用线性同余法(Linear Congruential Method)来生成一个随机数列,这种方法需要设置四个非负整数参数m,a,c,X[0],按照下面的公式生成出一系列随机数X[n]X[n+1]=(aX[n]+c)mod m其中mod m表示前面的数除以m的余数。从这个式子可以看出,这个序列的下一个数总是由上一个数生成的。用这种...转载 2020-04-28 15:41:07 · 537 阅读 · 0 评论 -
【算法】最优二叉查找树
#include<iostream>using namespace std;double C[20][20]; // 最优二叉树的平均比较次数矩阵 int R[20][20]; // 根结点矩阵 // 最优二叉查找树 double OptimalBST(double p[],int n) // 传入字符的查找概率p[n] { // 初始化主对角线和第一条次对...原创 2020-04-28 12:18:25 · 506 阅读 · 0 评论 -
【算法】0/1背包问题(动态规划)
#include<iostream>#include<cmath>using namespace std;int x[20];int V[20][20];int KnapSack(int w[],int v[],int n,int C){ for(int i=0;i<=n;i++) // 初始化第0列(可省略) V[i][0] = 0; ...原创 2020-04-27 15:23:34 · 136 阅读 · 0 评论 -
【算法】最长公共子序列问题
#include<iostream>using namespace std;int L[20][20],S[20][20]; // 假设最多不超过19个元素比较 int CommonOrder(char x[],int m,char y[],int n,char z[]){ int i,j,k; for(j=0;j<=n;j++) L[0][j] = 0;...原创 2020-04-26 22:38:17 · 217 阅读 · 0 评论 -
【算法】最长递增子序列问题
#include<iostream>using namespace std;int IncreaseOrder(int a[],int n){ int L[10],x[10][10]; // 假设最多10个元素 for (int i=0;i<n;i++){ // 初始化,最长递增子序列长度为1 L[i] = 1; x[i][0] = a[i]; }...原创 2020-04-26 17:33:42 · 128 阅读 · 0 评论 -
【算法题】多源点最短路径问题(动态规划)
时间复杂度:O(n³)#include <iostream>#define INF 999using namespace std;const int n=3; // 假设图中最多顶点个数int arc[n][n] = {{0,4,11},{6,0,2},{3,INF,0}};int dist[n][n] = {0}; void Floyd(int arc[n][...原创 2020-04-20 16:53:15 · 2128 阅读 · 1 评论 -
【算法题】Rails(UVA)
题目:给定一个N,代表入栈序列1-N (N ≤1000),判断出栈序列是否合法。(当某个数字后面出现比它小的数字而且是按递减排列则不合法,与本题无关。)输入:这个输入文件由多个行块组成。每一个块描述的是多个要求的重组车厢的序列。在这每个块中的第一行是一个整数N,被用来说明上面每行的车厢个数。这个快的最后一行仅仅是一个数字0要来标记该快的结束.最后一个块仅仅是一个0独占一行。输出:这...原创 2020-04-14 15:57:38 · 270 阅读 · 0 评论 -
【算法题】多段图的最短路径问题(动态规划)
时间复杂度为O(m+k):m为边的数目,k为段的数目。#include<iostream>using namespace std;#define INF 999int arc[100][100]; // 最多100个点 int CreateGraph(){ int vnum,arcnum; cout<<"请输入顶点和边的个数:"<<end...原创 2020-04-13 20:36:43 · 13662 阅读 · 2 评论 -
【算法题】数塔问题(动态规划)
时间复杂度:O(n²)#include<iostream>using namespace std;#define n 5int DataTower(int d[n][n]){ int maxAdd[n][n]={0}, path[n][n]={0}; // 初始化 int i,j; for(j=0;j<n;j++) // 初始化底层决策过程 maxAd...原创 2020-04-13 17:26:25 · 2163 阅读 · 0 评论 -
【算法题】救济金发放(UVA133)
#include<stdio.h>#define maxn 25int n,k,m,a[maxn];int go(int p,int d,int t){ while(t--){ // 共 t次,一次走一格,以防跳过空白格 do{ p = (p+d+n-1)%n + 1; // B逆时针从 1->10 时 } while(a[p]==0); //...原创 2020-04-11 17:20:04 · 186 阅读 · 0 评论 -
【算法】IP Networks
#include <iostream>#include <cstdio>#include <cstring>using namespace std; const int MOD = (1 << 8);const int N = 1000;unsigned int ip[N]; void output_result(unsigne...原创 2020-04-07 15:15:03 · 183 阅读 · 0 评论 -
【算法】最近对问题(分治法)
分治策略:#include<iostream>#include<stdio.h>#include<string.h>#include<cmath>using namespace std;struct Point{ int x,y;};double Distance(Point a,Point b){ return s...原创 2020-08-21 16:34:22 · 160 阅读 · 0 评论 -
【算法】棋盘覆盖问题
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int t; // 总共用的骨牌数量 int board[256][256]; void ChessBoard(int tr,int tc,int dr,int dc,int size){...原创 2020-03-23 15:14:55 · 190 阅读 · 0 评论 -
【算法】Squares
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int H[10][10];int V[10][10];int ans=0;bool check(int x,int y,int size) // 判断能否形成正方形{ for(int i=x...原创 2020-03-17 15:34:47 · 406 阅读 · 0 评论 -
【算法】最大子段和问题
#include<iostream>using namespace std;int MaxSum(int a[],int left,int right){ int sum=0,midSum=0,leftSum=0,rightSum=0; int center,s1,s2,lefts,rights; if(left==right){ sum = a[left]; ...原创 2020-03-16 17:14:21 · 201 阅读 · 0 评论 -
【算法】数字旋转矩阵
#include<iostream>#include<stdio.h>using namespace std;int data[100][100];void Full(int number,int begin,int size) // 起始数字,起始下标,阶乘大小 { if(size==0){ return; } if(size==1){ d...原创 2020-03-13 10:01:58 · 1364 阅读 · 0 评论 -
【算法】Palindromes
#include<iostream>#include<string.h>#include<set>using namespace std;set<char> all; // 存放镜像mirror中的特殊对称字符 set<char> a; // 存放镜像mirror中不存在的字符 bool mirror(char s...原创 2020-03-10 17:03:00 · 231 阅读 · 0 评论 -
【算法】Cube painting (骰子涂色)
原文地址题意:给两个骰子,每枚骰子每个面由红(red),蓝(blue),绿(green)三种颜色之一染色,可以把每枚骰子按照图示方式编号,然后按照编号给出颜色顺序,问这两枚骰子能否通过旋转变成展示的颜色相对位置一致?思路:可以将一枚骰子的颜色顺序不变,将另一枚旋转,看旋转过程中是否有颜色完全重合的情况。旋转时,每个面都可以在编号1的位置,这有6种选择,而当编号1位置的面确定了,那么...转载 2020-02-25 20:41:07 · 1046 阅读 · 0 评论 -
【算法】TEX Quotes
问题:输入若干行字符串,左边的双引号"翻译成``,右边的双引号"翻译成’’(两个单引号)。输入的双引号必须成对出现。输入:输出://#include<bits/stdc++.h> 万能头文件#include<iostream>#include<cstdio>using namespace std; int main() { ...原创 2020-02-25 18:16:18 · 162 阅读 · 0 评论 -
【算法】WERTYU
问题:如右上角所示的键盘,在正常打字的基础上向右移动一格打字作为输入,要求译码,即输出原来要表示的意思。(注:除空格外的其他操作键不输出,除`QAZ这四个字符外键盘其余字符均可作为输出,字母为大写形式)样例输入:O S, GOMR YPFSU/样例输出:I AM FINE TODAY.#include<iostream>#include<cstdio> ...原创 2020-02-25 17:59:13 · 254 阅读 · 0 评论