acm
1191458130
这个作者很懒,什么都没留下…
展开
-
floyd算法 最短路径
原理:如果存在一个顶点k,以k作为中介点的时候,顶点i和顶点j的最短路径缩短,那么就用顶点k作为顶点i和j的中介点。 //初始化后,cost[i][j]代表从i到j所用花费 //step[i][j]代表从i到j中间要走的步骤 int[][] cost = new int[potatoNum.length+1][potatoNum.length+1]; int[][] step = new int[potatoNum.length+1][pota原创 2020-09-01 06:10:14 · 207 阅读 · 0 评论 -
背包问题详解
背包问题详解 (java) 拿着一个容量为C(重量)的背包,去杂货店买东西,第i件物品的价值是v[i],重量是w[i]。问在不超过背包容量C的情况下,最多能买多少钱的东西. 背包问题可以大致分为: 0-1背包问题: 商店里的每个物品能且仅能购买一次. 多重背包问题: 商店里的每样东西都可以购买N次。 无限背包问题: 商店里的每样东西都可以无限次的购买 其实,只要把0-1背包问题的思想掌握,其他两种背包问题也能通过类似的思路去解决。本篇会详细的介绍0-1背包问题,并给出用递归,二维数组,一维数组。实现原创 2020-09-01 06:07:31 · 418 阅读 · 0 评论 -
八皇后问题 C++暴力破解
#include<stdio.h> #include<iostream> using namespace std; bool judge(int *digital) { for(int i=0;i<8;i++) { for(int j=0;j<i;j++) { if(digital[i]==digital[j])return fal...原创 2019-01-28 19:50:33 · 525 阅读 · 1 评论 -
如何快速的求出组合数(杨辉三角)
杨辉三角中,边界的值是1,除了边界之外任意一个元素都是其左上方和右上方元素之和。利用这个特性,我们可以很容易的利用二维数组来生成杨辉三角。 c++代码如下。 void yanghui(int n){ //initialize array for(int i=0;i<MAX;i++){ for(int j=0;j<MAX;j++)c[i][j]=0; } for(int ...原创 2019-06-07 20:26:05 · 1224 阅读 · 0 评论