算法
mcl19909949541
我命令你,喜欢我!
展开
-
多重背包(C语言)
有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤1000<vi,wi,si≤100输入样例原创 2021-05-14 19:03:17 · 24021 阅读 · 0 评论 -
完全背包(C语言)
有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 5原创 2021-05-13 15:10:21 · 23815 阅读 · 0 评论 -
01背包(C语言)
最近考试繁多,数据结构书上的主要算法及数据结构也写的七七八八,就随便写写,现在博客索性当个云笔记了。有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示原创 2021-05-12 17:22:46 · 24654 阅读 · 0 评论 -
关键路径(C语言)
#include <stdio.h>#define max 100#define mc 10000000#define false -1#define ok 1typedef struct{ //定义图 char vex[max]; int arc[max][max]; int vexnum,arcnum;}AmGraph;int locatedv(AmGraph G,char a) //输入的顶点找到位置{ int i=0; for(i=1;i<=G.vexnu原创 2021-05-08 18:22:10 · 3613 阅读 · 1 评论 -
并查集(C语言)
并查集(C语言)例五一去重庆也回来了,说实话也该收收心开始学习了,马上一堆考试就要来了,想想就挺头大的。今天刚刚赶路回来,就写写简单的吧,过后一阵估计写博客也慢下来了,一是还是以学业为重,二是也不太想每天记挂博客这件事。话不多说,今天学并查集。并查集就是简单说,由一些直接的信息(每两个人的联系)来推出团伙(也就是根节点)个数。例有n个人,编号1-n。现在有一个舞会,在舞会上,大家会相互介绍自己的朋友。即: 如果a认识b,b认识c。那么在舞会上,a就会通过b认识到c。现在,给出m个关系,每个关系描述原创 2021-05-05 20:40:42 · 23487 阅读 · 0 评论 -
最小生成树的实现(C语言)
今天做洛谷的时候刷到好多图论的题,发现自己在这一方面算法的掌握还是有待提高啊。在这就先介绍最小生成树的算法吧。最小生成树最小生成树(minimum spanning tree)是由n个顶点,n-1条边,将一个连通图连接起来,且使权值最小的结构。最小生成树可以用Prim(普里姆)算法或kruskal(克鲁斯卡尔)算法求出。此外还可以用bfs和dfs生成,分别叫bfs生成树和dfs生成树。例:Prim(普里姆)算法这里就采用的是邻接矩阵存储的,个人觉得Prim和最短路中的dijkstra很像,原创 2021-04-29 16:04:29 · 40695 阅读 · 3 评论 -
拓扑排序简单实现(C语言)
拓扑排序简单实现(C语言拓扑排序预备知识执行步骤图解代码实现今天刷洛谷的图时看到好多题都要用图的拓扑排序,索性就学一把,敲一敲代码学学算法也复习一下图的具体操作和栈的使用。拓扑排序对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,原创 2021-04-28 20:46:40 · 5964 阅读 · 0 评论 -
洛谷P1219 [USACO1.5]八皇后 Checker Challenge(C语言)
洛谷P1219 [USACO1.5]八皇后 Checker Challenge 题目代码这个八皇后问题也是经典入门深搜的题目了呀,理论上深搜都可以运用数据结构的栈来模拟计算机内部的压栈操作。但这里实在是麻烦,就把我以前做的题解注释下发出来,一边方便自己复盘总结,一边也给大家提供一个思路吧。题目八皇后的由来和问题八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不原创 2021-04-28 19:15:33 · 23819 阅读 · 0 评论 -
洛谷P3884 [JLOI2009]二叉树问题(C语言)
P3884 [JLOI2009]二叉树问题(C语言)题目代码这个题说是用树的数据结构,但其实用图更简单,弗洛伊德算法能很快做出来,就是三重循环比较吃时间复杂度,相比于算法大佬用各种LCA解题,我这个大学刚刚开始学编程的看的瑟瑟发抖(我上学期更是心态爆炸到自闭),我这里就以学校学的为基础解题了。题目代码#include <stdio.h>#include <stdlib.h>#define Min(a,b) ((a)<(b)?(a):(b))//手打min提高效率原创 2021-04-28 00:06:06 · 154 阅读 · 0 评论 -
洛谷P1996 约瑟夫问题(C语言)
洛谷P1996 约瑟夫问题(C语言)题目1.单链表模拟队列模拟数组模拟数据结构有点累,学学简单的算法缓解以下,今天做做约瑟夫,虽然大一上已经做过,但现在有了数据结构的知识,做这些肯定有更进一步的体会与感悟了吧。题目1.单链表模拟很久之前用数组进行模拟,现在换一种方法,让我们看看用链表模拟如何:#include<stdio.h>#include<stdlib.h>typedef struct node{ int data; struct node *原创 2021-04-27 17:06:15 · 24406 阅读 · 5 评论 -
十大排序(C语言)
最近学数据结构,想把排序的算法总结梳理一下,也打发下时间。插入类排序直接插入排序1.将第i个元素插入到前i-1个有序序列中取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;将新元素插入到该位置后void InsertionSort(int arr[], int size){ int i, j, tmp; for (i = 1; i < size; i++)原创 2021-04-22 12:27:46 · 202 阅读 · 0 评论 -
洛谷 P2404 自然数的拆分问题C语言
文章目录前言一、题目二、解题思路1.考察方向2.深度优先搜索3.解题正解(升序+不去重)(去重+升序)总结前言 之前看了好多文章都说学习编程时写博客的重要,但一直没有尝试,今天在这发第一篇来开个头吧。 这篇是我刷洛谷时的一道题,希望大家多多指教QAQ刚刚大一,第一篇记录如下????一、题目二、解题思路1.考察方向这道题题目理解很简单,自然数拆分,但要是用单纯循环却很难解决。因此我们想到dfs深搜(深度优先搜索)进行解题。这道题是一道很典型的dfs入门题型,由此可以引发许多变式原创 2021-03-14 17:27:55 · 1070 阅读 · 4 评论