摘要: 集合划分 如题: 思路: 1.特殊情况: 1)m=n return1。 2)m=1 return1。 2.递归 1)把前n-1个元素分成m-1份,然后n号元素单独放。 2)把前n-1个元素分成m份,然后把n号元素插入到这m个集合中(有m种插法)总数就是 F(n,m) =F(n-1,m-1) + m * F(n 阅读全文
posted @ 2023-12-10 17:56 Kirei7 阅读(25) 评论(0) 推荐(0)
摘要: 流水作业调度问题 如题: 思路: 最优调度应该是: 1. 使M1上的加工是无间断的。即M1上的加工时间是所有ai之和,但M2上不一定是bi之和。M2应该空闲多 2. 使作业在两台机器上的加工次序是完全相同的。 然后 没有思路 那就上b站大学,搜素 参考 https://www.bilibili.com/video/B 阅读全文
posted @ 2023-12-10 17:56 Kirei7 阅读(32) 评论(0) 推荐(0)
摘要: 工作分配问题 如题: 思路: 让工作去选人 画出解空间树即可 代码 #include <stdio.h> #include <limits.h> int n; int c[21][21]; //将工作i分配给第j个人的费用为c[i][j] int minCost = INT_MAX; //因为要求最小值,所以将m 阅读全文
posted @ 2023-12-10 17:55 Kirei7 阅读(28) 评论(0) 推荐(0)
摘要: 一笔画 如题: 思路: 1)该路径必须覆盖图中的所有边(即每条边都必须被遍历一次) 2)一笔画问题的连通图中有一个度数为奇数的节点,那么必定需要存在另一个度数为奇数的节点,否则这两个节点无法通过路径相连。在一个连通图中,节点的度数是相同的,所以奇数度数的节点必定成对出现。如果奇数度数的节点数大于2,那么无论 阅读全文
posted @ 2023-12-10 17:54 Kirei7 阅读(54) 评论(0) 推荐(0)
摘要: 硬币找钱问题 硬币找钱 如题: 思路: 从最大币值入手 include <stdio.h> int main() { int a[6] = {5, 10, 20, 50, 100, 200}; // 币值,以分为单位 int b[6]; // 存放对应硬币的个数 int n; scanf("%d", &n); / 阅读全文
posted @ 2023-12-10 17:54 Kirei7 阅读(48) 评论(0) 推荐(0)
摘要: 活动安排 贪心算法 会议(活动)安排 如题: 思路: 贪心算法 假设现在有五组数据 1.将活动按照结束时间递增排序 2.当前安排的活动的结束时间小于等于下一个活动的开始时间 ps:如果两个活动的结束时间相同,选择开始时间较晚的 a1 3,5 a2 1,4 a2 1,4 a1 3,5 a3 0,6 a3 0,6 a4 5 阅读全文
posted @ 2023-11-26 21:51 Kirei7 阅读(41) 评论(0) 推荐(0)
摘要: 租用游艇问题 租用游艇问题 如题: 思路: 类似于矩阵连乘问题 从第i站到第j站时,我们可以从这两个站中间选择一个中间站k,先从始发站i坐从中间站k下船后,再从第k站坐船到第j站,这样就把一个大问题m[i][i]划分成了m[i][k]和m[k][j]两个子问题。 m[i][j]可以定义为 i+1==j, m[i] 阅读全文
posted @ 2023-11-26 00:01 Kirei7 阅读(114) 评论(0) 推荐(0)
摘要: 最长公共子串 最长公共子串 如题: 思路: 很明显的动态规划问题 找出递推公式,《计算机算法设计与分析第五版 王晓东》p55 建议画图理解 s1==s2 s1!=s2 然后填表 s1= a b c f b c s2= a b f c a b (第一组数据) a b c f b c 0 0 0 0 0 0 0 a 阅读全文
posted @ 2023-11-24 23:00 Kirei7 阅读(43) 评论(0) 推荐(0)
摘要: 正整数n的不同分解式个数 正整数n的不同分解式个数 如题: 思路: 使用动态规划的思想(DP思路,即一个大一点规模的问题可以被拆解为更小的,更容易解决的问题) 首先,定义一个数组 dp,用来存储每个数的分解式个数。 dp[i] 表示当前数 i 的不同分解式的个数。 接下来,从数 2 开始循环,逐个计算每个数的分解式个数。dp 阅读全文
posted @ 2023-11-23 19:08 Kirei7 阅读(125) 评论(0) 推荐(0)
摘要: 分解质因数 分解质因数 如题: 思路: 短除法 代码: #include <stdio.h> #include <math.h> // 用函数。保持主函数的可读性吧 void decomposeMinSum(int M) { printf("%d=", M); //所有整数的最小正因数1 if (M != 1) 阅读全文
posted @ 2023-11-22 22:18 Kirei7 阅读(26) 评论(0) 推荐(0)