C语言
文章平均质量分 85
Nefu_lyh
这个作者很懒,什么都没留下…
展开
-
算法设计与分析——第五章回溯法 批处理作业调度 + 最大团问题+图的m着色问题
文章目录6、批处理作业调度7、最大团问题8、图的m着色问题6、批处理作业调度7、最大团问题8、图的m着色问题原创 2021-05-31 15:21:01 · 1057 阅读 · 0 评论 -
算法设计与分析——第五章回溯法 N后问题+旅行售货员问题+符号三角形
文章目录3、N后问题(子集树)4、旅行售货员问题(排序树)5、符号三角形问题(子集树)3、N后问题(子集树)在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n×n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。当且仅当 n = 1 或 n ≥ 4 时问题有解。思路参考文章代码参考文章代码思路:一行一行地摆放,在确定一行中的那个皇后应该摆在哪一列时,需要当前列是否合法,如果合法,则将皇原创 2021-05-10 09:39:12 · 1159 阅读 · 0 评论 -
算法设计与分析——第五章回溯法 0-1背包问题+最优装载问题
文章目录1、0-1背包问题2、装载问题参考文章1参考文章2参考视频1、0-1背包问题问题: 给定n种物品和一背包。物品i的重量是wi,其价值为pi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?分析: 问题是n个物品中选择部分物品,可知,问题的解空间是子集树。比如物品数目n=3时,其解空间树如下图,边为1代表选择该物品,边为0代表不选择该物品。使用x[i]表示物品i是否放入背包,x[i]=0表示不放,x[i]=1表示放入。回溯搜索过程,如果来到了叶子节点,表示一条搜原创 2021-05-07 20:50:21 · 2976 阅读 · 0 评论 -
算法设计与分析——第四章贪心算法复习
文章目录4.1 贪心概述4.2 活动安排问题4.3 最优装载问题4.4 最优前缀码及哈夫曼算法4.5 多机调度问题4.1 贪心概述4.2 活动安排问题4.3 最优装载问题4.4 最优前缀码及哈夫曼算法4.5 多机调度问题...原创 2021-04-16 20:55:20 · 836 阅读 · 0 评论 -
算法设计与分析——第三章动态规划复习
文章目录3.1 动态规划算法的概念矩阵连乘问题3.1 动态规划算法的概念动态规划的问题要满足优化原则:一个最优决策序列的子问题本身一定是相对于子序列的初始和结束状态的最优决策序列。优化函数的特点: 任何最短路径的子路径相对于子问题始终点最短。动态规划设计要素:1、问题建模,优化的目标函数是什么?约束条件是什么?2、如何划分子问题(边界)?3、问题的优化函数值与子问题的优化函数值存在着什么依赖关系?(递推方程)4、是否满足优化原则?5、最小子问题怎样界定?其优化函数值,即初值等于什么?原创 2021-04-15 20:20:32 · 740 阅读 · 0 评论 -
算法设计与分析——2.7循环赛日程表
参考文章:传送门1代码模拟实现过程:第一步:先填好左上小角,找左下小角(对应位置+2^1)第二步:将左下角移到右上角,左上角移到右下角。这里有个技巧,由于最后的日程表是沿对角线对称的,所以求出下三角后可以直接得到上三角补全。第三步:再将新填好的部分当成左上角继续填充其余的位置结果:代码:#include <iostream>#include <cstring>#include <bits/stdc++.h>using namespac原创 2021-04-12 21:41:18 · 1052 阅读 · 1 评论 -
算法设计与分析—— 2.4 strassen矩阵乘法+2.5 棋盘覆盖问题
文章目录原创 2021-04-08 20:02:22 · 818 阅读 · 0 评论 -
算法设计与分析——2.1递归的概念
2.1递归的概念分析问题、寻找递归关系:找出大规模问题与小规模问题的关系,这样通过递归使问题的规模逐渐变小。设置边界、控制递归:找出停止条件,即算法可解的最小规模问题。设计函数、确定参数:和其他算法一样设计函数体中的操作及相关参数。2.1.1求阶乘代码:#include <iostream>#include <cstring>using namespace std;int fun(int n){ if(n==0) return 1; else .原创 2021-04-03 18:40:10 · 746 阅读 · 1 评论 -
猴子大王【链表】
1.猴子大王有 n 只猴子围成一圈,编号为 1~n,打算从中选出一个大王。经过协商,决定选大王的规则如下:从第一只猴子开始循环报数,数到 k 的猴子出圈,然后从下一只猴子继续报数出圈……最后剩下来的那只猴子就是大王。inputs一行两个正整数 n 和 k,之间用一个空格分开,2≤n≤1000,2≤k≤10^9 。6 4outputs一行 n 个正整数,表示 n 只猴子依次出圈的编号,中间用一个空格隔开4 2 1 3 6 5代码思路1.由于到末尾需要从头开始,所以将数据存入成环的链表中原创 2020-09-15 09:50:01 · 1707 阅读 · 0 评论 -
【C语言】七段显示器输出数字
1.题目要求2.思路step1:需要一个10×7的二维数组来确定每个数字该显示的部分,比如数字9需要在题目所示图片的0,1,2,3,5,6的位置显示 - 或者 | ,因为一共有0-9(10个数字,每个数字有7个位置要确定),所以需要10×7的二维数组step2:手动地将所有的数字显示形状在纸上画出来,再根据图片将0-9的数字转换成数组形式,如下:int num[10][7]={{1,1,1,1,1,1,0},{0,1,1,0,0,0,0},{1,1,0,1,1,0,1},{1,1,1,1,原创 2020-06-10 10:45:32 · 5311 阅读 · 1 评论 -
【C语言】文件操作习题-瑞格(5864-5867)
一、瑞格58641.题目说明2.思路step1:打开文件,因为只需要可读,所以用r模式step2:读取文件每行用fgets(a,50,fp)获取,进行大小写处理后存入数组a,并直接将数组a输出step3:处理完每行将i变为0,根据文件下一行的读取数据更新数组a3、代码实现#include <stdio.h>#include <stdlib.h>int main(){ char a[50]; int i=0; FILE *fp=fopen(原创 2020-06-12 20:27:18 · 1097 阅读 · 0 评论 -
【C语言】基本文件操作案例—顺序读写+随机读写
以下内容均为自用,不喜误喷一、读取a文件写入b文件1、题目说明:读取 “D:\软件:\cd文件:\文件操作:\测试数据.txt” 的数据并进行显示,按从小到大排序后存入 “D:\软件:\cd文件:\文件操作:\排序数据.txt” 中2、思路step1:打开两个文件,用FILE*类型的指针 fa,fb指向两文件(两文件均保存在同一路径下,因为 ”测试数据.txt“ 可读所以用r模式,“排序数据.txt” 可写,所以用w模式,)step2:定义数组a,从fa中读取 “测试数据.txt” 中的数据,原创 2020-06-06 11:38:56 · 2975 阅读 · 2 评论 -
二维数组
二维数组及结构体二维数组定义:二维数组,本质上是以数组作为数组元素,即“数组的数组”int a[3][3]={{1,2,3},{1,1,1}};int b[3][3]{1,2,3,1,1,1};两者效果相同,第一种叫做分段赋值,第二种叫做连续赋值。!!!注意:可以省略一维的大小,但不可省略二维的大小!!!因为二维确定了一行有几个元素a[][3]={1,2,3,4,5,6,7,...原创 2020-01-15 23:00:22 · 26182 阅读 · 3 评论 -
排序笔记(2)选择排序(简单选择排序+堆排序)、归并排序
文章目录排序分类(3)选择排序1.简单选择排序理论:代码:2.堆排序理论:代码:(4)归并排序理论:代码:(5)分配排序理论:代码:排序分类(3)选择排序1.简单选择排序首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换。再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将它与第二个记录交换。重复上述操作,共进行n-1趟排序后,排序结束。理论:例:将数组[1 5 3 2]按照从小到大的顺序排序。注:【】内为已经排好序的数第一轮 :min原创 2021-03-13 19:26:19 · 925 阅读 · 0 评论 -
排序笔记(1)插入排序(直接插入+折半插入+希尔排序)、交换排序(冒泡+快排)
文章目录排序分类(1)插入排序1.直接插入2.折半插入3.希尔排序(2)选择排序1.简单选择排序2.堆排序(3)归并排序(4)分配排序排序分类(1)插入排序视第一个数为已经排好序的数,将接下来的数插进前面已经排好序的数中,直至全部插完。1.直接插入例:将数组[1 5 3 2]按照从小到大的顺序排序。【】内为已经排好序的数第一步:【1】5 3 2 (视第一个数为排好序的数)第二步:【1 5】3 2(5>1,将5插到1的后面)第三步:【1 3 5】2(3>1,3<5,找到3原创 2021-03-10 20:34:23 · 1343 阅读 · 0 评论